# 4401 proved laws from 59 packages on BendHub, checked with bend 2.0.36. Fields are tab-separated: package/module, law, statement. 0x010f315b70bbac62ddd97e2e3de5f9cc/heap.bend Heap.pop.push_new @-x:U32 -> {Heap.pop(U32, U32.is_le, Heap.push(U32, U32.is_le, x, Heap.new(U32))) == Some{(x, Heap.new(U32))} : Maybe<&1, Pair(U32, Heap)>} 0x010f315b70bbac62ddd97e2e3de5f9cc/heap.bend Heap.size.push @-x:U32 -> @h:Heap -> {Heap.size(U32, Heap.push(U32, U32.is_le, x, h)) == 1n+Heap.size(U32, h) : Nat} 0x014d1ec5074b05cc46cbfd40d4033fe1/LAWS.bend empty_command_parses {0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.parse(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.command("tool"), []) == 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Parsed{0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Invocation{["tool"], [], []}} : 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Outcome} 0x014d1ec5074b05cc46cbfd40d4033fe1/LAWS.bend lookup_preserves_value @+value:0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Value -> {0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.get(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Invocation{[], [0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Binding{"key", value}], []}, "key") == Some{value} : Maybe<&2, 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Value>} 0x014d1ec5074b05cc46cbfd40d4033fe1/LAWS.bend absent_option_is_none @key:String -> {0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.get(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Invocation{[], [], []}, key) == None{} : Maybe<&2, 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Value>} 0x014d1ec5074b05cc46cbfd40d4033fe1/LAWS.bend option_and_argument_names_are_separate @value:0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Value -> {0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.get(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Invocation{[], [], [0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Binding{"name", value}]}, "name") == None{} : Maybe<&2, 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Value>} 0x014d1ec5074b05cc46cbfd40d4033fe1/LAWS.bend required_option_preserves_text @+text:String -> {0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.parse(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.option(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.command("tool"), "--label ", ""), ["--label", text]) == 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Parsed{0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Invocation{["tool"], [0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Binding{"label", 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Text{text}}], []}} : 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Outcome} 0x014d1ec5074b05cc46cbfd40d4033fe1/LAWS.bend repeated_value_uses_last @+text:String -> {0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.parse(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.option(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.command("tool"), "--label ", ""), ["--label=first", "--label", text]) == 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Parsed{0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Invocation{["tool"], [0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Binding{"label", 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Text{text}}], []}} : 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Outcome} 0x014d1ec5074b05cc46cbfd40d4033fe1/LAWS.bend repeatable_option_defaults_empty {0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.parse(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.repeatable_option(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.command("tool"), "--include ", ""), []) == 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Parsed{0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Invocation{["tool"], [0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Binding{"include", 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Many{[]}}], []}} : 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Outcome} 0x014d1ec5074b05cc46cbfd40d4033fe1/LAWS.bend repeatable_option_preserves_order @+first:String -> @+second:String -> {0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.parse(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.repeatable_option(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.command("tool"), "--include ", ""), ["--include", first, "--include", second]) == 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Parsed{0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Invocation{["tool"], [0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Binding{"include", 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Many{[first, second]}}], []}} : 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Outcome} 0x014d1ec5074b05cc46cbfd40d4033fe1/LAWS.bend repeatable_option_preserves_attached_empty {0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.parse(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.repeatable_option(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.command("tool"), "-i, --include ", ""), ["--include=", "-ilast"]) == 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Parsed{0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Invocation{["tool"], [0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Binding{"include", 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Many{["", "last"]}}], []}} : 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Outcome} 0x014d1ec5074b05cc46cbfd40d4033fe1/LAWS.bend repeatable_option_missing_value_is_error {0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.parse(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.repeatable_option(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.command("tool"), "--include ", ""), ["--include"]) == 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Error{"zhao.optionMissingArgument", "option '--include' argument missing"} : 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Outcome} 0x014d1ec5074b05cc46cbfd40d4033fe1/LAWS.bend repeatable_option_requires_value_syntax {0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.parse(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.repeatable_option(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.command("tool"), "--include [path]", ""), []) == 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Error{"zhao.invalidDefinition", "repeatable options require syntax"} : 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Outcome} 0x014d1ec5074b05cc46cbfd40d4033fe1/LAWS.bend negated_option_defaults_true {0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.parse(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.option(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.command("tool"), "--no-color", ""), []) == 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Parsed{0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Invocation{["tool"], [0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Binding{"color", 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Boolean{True{}}}], []}} : 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Outcome} 0x014d1ec5074b05cc46cbfd40d4033fe1/LAWS.bend negated_option_sets_false {0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.parse(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.option(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.command("tool"), "--no-color", ""), ["--no-color"]) == 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Parsed{0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Invocation{["tool"], [0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Binding{"color", 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Boolean{False{}}}], []}} : 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Outcome} 0x014d1ec5074b05cc46cbfd40d4033fe1/LAWS.bend delimiter_makes_help_literal {0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.parse(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.argument(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.command("tool"), "", ""), ["--", "--help"]) == 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Parsed{0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Invocation{["tool"], [], [0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Binding{"name", 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Text{"--help"}}]}} : 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Outcome} 0x014d1ec5074b05cc46cbfd40d4033fe1/LAWS.bend missing_value_is_error {0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.parse(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.option(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.command("tool"), "--label ", ""), ["--label"]) == 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Error{"zhao.optionMissingArgument", "option '--label' argument missing"} : 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Outcome} 0x014d1ec5074b05cc46cbfd40d4033fe1/LAWS.bend unknown_option_is_error {0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.parse(0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.command("tool"), ["--unknown"]) == 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Error{"zhao.unknownOption", "unknown option '--unknown'"} : 0x014d1ec5074b05cc46cbfd40d4033fe1/zhao.Outcome} 0x0f1da4e80677f1d50e6f638a7d6f27ef/u64.bend add_comm @a:U64 -> @b:U64 -> {add(a, b) == add(b, a) : U64} 0x12ed1da25aa4f36622687d603aeb34e0/deque.bend Deque.to_list.new @-A:Data -> {Deque.to_list(&2, A, Deque.new(&2, A)) == [] : List<&2, A>} 0x12ed1da25aa4f36622687d603aeb34e0/deque.bend Deque.to_list.push_front @-A:Data -> @-x:A -> @d:Deque<&2, A> -> {Deque.to_list(&2, A, Deque.push_front(&2, A, x, d)) == x <> Deque.to_list(&2, A, d) : List<&2, A>} 0x12ed1da25aa4f36622687d603aeb34e0/deque.bend Deque.pop_front.push_front @-A:Data -> @-x:A -> @d:Deque<&2, A> -> {Deque.pop_front(&2, A, Deque.push_front(&2, A, x, d)) == Some{(x, d)} : Maybe<&1, Pair(A, Deque<&2, A>)>} 0x12ed1da25aa4f36622687d603aeb34e0/deque.bend Deque.pop_back.push_back @-A:Data -> @-x:A -> @d:Deque<&2, A> -> {Deque.pop_back(&2, A, Deque.push_back(&2, A, x, d)) == Some{(x, d)} : Maybe<&1, Pair(A, Deque<&2, A>)>} 0x12ed1da25aa4f36622687d603aeb34e0/deque.bend Deque.lemma.append_nil @-A:Data -> @xs:List<&2, A> -> {List.append(&2, A, xs, []) == xs : List<&2, A>} 0x12ed1da25aa4f36622687d603aeb34e0/deque.bend Deque.lemma.append_assoc @-A:Data -> @xs:List<&2, A> -> @-ys:List<&2, A> -> @-zs:List<&2, A> -> {List.append(&2, A, List.append(&2, A, xs, ys), zs) == List.append(&2, A, xs, List.append(&2, A, ys, zs)) : List<&2, A>} 0x12ed1da25aa4f36622687d603aeb34e0/deque.bend Deque.to_list.from_list @-A:Data -> @xs:List<&2, A> -> {Deque.to_list(&2, A, Deque.from_list(&2, A, xs)) == xs : List<&2, A>} 0x12ed1da25aa4f36622687d603aeb34e0/deque.bend Deque.lemma.reverse_go @-A:Data -> @xs:List<&2, A> -> @-acc:List<&2, A> -> {List.append(&2, A, List.reverse.go(&2, A, xs, []), acc) == List.reverse.go(&2, A, xs, acc) : List<&2, A>} 0x12ed1da25aa4f36622687d603aeb34e0/deque.bend Deque.to_list.push_back @-A:Data -> @-x:A -> @d:Deque<&2, A> -> {Deque.to_list(&2, A, Deque.push_back(&2, A, x, d)) == List.append(&2, A, Deque.to_list(&2, A, d), [x]) : List<&2, A>} 0x1fc67b41fabeabde819cdaa647758be1/domain/architecture/LAWS.bend first_key_is_system @+a:0x1fc67b41fabeabde819cdaa647758be1/domain/architecture/type.Architecture -> {0x1fc67b41fabeabde819cdaa647758be1/general/rose/ops.first(0x1fc67b41fabeabde819cdaa647758be1/domain/architecture/ops.keys(a)) == 0x1fc67b41fabeabde819cdaa647758be1/domain/architecture/ops.system_key(a) : String} 0x1fc67b41fabeabde819cdaa647758be1/general/rose/LAWS.bend first_key_is_own @-N:Data -> @+r:0x1fc67b41fabeabde819cdaa647758be1/general/rose/type.Rose -> {0x1fc67b41fabeabde819cdaa647758be1/general/rose/ops.first(0x1fc67b41fabeabde819cdaa647758be1/general/rose/ops.keys(N, [r])) == 0x1fc67b41fabeabde819cdaa647758be1/general/rose/ops.key(N, r) : String} 0x2731c2a5d4185b57cf5353061639642e/src/LAWS.bend timeout_is_explicit @+ms:U32 -> @+request:0x2731c2a5d4185b57cf5353061639642e/src/http.Request -> {0x2731c2a5d4185b57cf5353061639642e/src/http.timeout(0x2731c2a5d4185b57cf5353061639642e/src/http.with_timeout(ms, request)) == ms : U32} 0x2731c2a5d4185b57cf5353061639642e/src/LAWS.bend body_limit_is_explicit @+bytes:U32 -> @+request:0x2731c2a5d4185b57cf5353061639642e/src/http.Request -> {0x2731c2a5d4185b57cf5353061639642e/src/http.body_limit(0x2731c2a5d4185b57cf5353061639642e/src/http.with_max_bytes(bytes, request)) == bytes : U32} 0x2731c2a5d4185b57cf5353061639642e/src/LAWS.bend setting_timeout_preserves_body_limit @+ms:U32 -> @+request:0x2731c2a5d4185b57cf5353061639642e/src/http.Request -> {0x2731c2a5d4185b57cf5353061639642e/src/http.body_limit(0x2731c2a5d4185b57cf5353061639642e/src/http.with_timeout(ms, request)) == 0x2731c2a5d4185b57cf5353061639642e/src/http.body_limit(request) : U32} 0x2731c2a5d4185b57cf5353061639642e/src/LAWS.bend setting_header_preserves_timeout @+name:String -> @+value:String -> @+request:0x2731c2a5d4185b57cf5353061639642e/src/http.Request -> {0x2731c2a5d4185b57cf5353061639642e/src/http.timeout(0x2731c2a5d4185b57cf5353061639642e/src/http.with_header(name, value, request)) == 0x2731c2a5d4185b57cf5353061639642e/src/http.timeout(request) : U32} 0x2731c2a5d4185b57cf5353061639642e/src/LAWS.bend setting_header_preserves_body_limit @+name:String -> @+value:String -> @+request:0x2731c2a5d4185b57cf5353061639642e/src/http.Request -> {0x2731c2a5d4185b57cf5353061639642e/src/http.body_limit(0x2731c2a5d4185b57cf5353061639642e/src/http.with_header(name, value, request)) == 0x2731c2a5d4185b57cf5353061639642e/src/http.body_limit(request) : U32} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend xor_comm @n:Nat -> @a:Word(n) -> @b:Word(n) -> {Word.xor(n, a, b) == Word.xor(n, b, a) : Word(n)} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend xor_assoc @n:Nat -> @a:Word(n) -> @b:Word(n) -> @c:Word(n) -> {Word.xor(n, a, Word.xor(n, b, c)) == Word.xor(n, Word.xor(n, a, b), c) : Word(n)} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend xor_zero @n:Nat -> @a:Word(n) -> {Word.xor(n, a, Word.zero(n)) == a : Word(n)} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend xor_self @n:Nat -> @+a:Word(n) -> {Word.xor(n, a, a) == Word.zero(n) : Word(n)} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend and_comm @n:Nat -> @a:Word(n) -> @b:Word(n) -> {Word.and(n, a, b) == Word.and(n, b, a) : Word(n)} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend and_assoc @n:Nat -> @a:Word(n) -> @b:Word(n) -> @c:Word(n) -> {Word.and(n, a, Word.and(n, b, c)) == Word.and(n, Word.and(n, a, b), c) : Word(n)} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend or_comm @n:Nat -> @a:Word(n) -> @b:Word(n) -> {Word.or(n, a, b) == Word.or(n, b, a) : Word(n)} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend or_assoc @n:Nat -> @a:Word(n) -> @b:Word(n) -> @c:Word(n) -> {Word.or(n, a, Word.or(n, b, c)) == Word.or(n, Word.or(n, a, b), c) : Word(n)} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend not_not @n:Nat -> @a:Word(n) -> {Word.not(n, Word.not(n, a)) == a : Word(n)} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend not_and @n:Nat -> @a:Word(n) -> @b:Word(n) -> {Word.not(n, Word.and(n, a, b)) == Word.or(n, Word.not(n, a), Word.not(n, b)) : Word(n)} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend add_zero @n:Nat -> @a:Word(n) -> {Word.add(n, a, Word.zero(n)) == a : Word(n)} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend adc_nat @n:Nat -> @a:Word(n) -> @b:Word(n) -> @c:Bool -> {Nat.add(Word.to_nat(n, Word.adc(n, a, b, False{}, c)), 0x340691c4c9cfde2764a3ed46e48d644a/word.scale(0x340691c4c9cfde2764a3ed46e48d644a/word.carry(n, a, b, c), 0x340691c4c9cfde2764a3ed46e48d644a/word.pow2(n))) == Nat.add(Word.to_nat(n, a), Nat.add(Word.to_nat(n, b), 0x340691c4c9cfde2764a3ed46e48d644a/word.b2n(c))) : Nat} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend not_nat @n:Nat -> @w:Word(n) -> {1n+Nat.add(Word.to_nat(n, w), Word.to_nat(n, Word.not(n, w))) == 0x340691c4c9cfde2764a3ed46e48d644a/word.pow2(n) : Nat} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend to_nat_inj @n:Nat -> @a:Word(n) -> @b:Word(n) -> @h:{Word.to_nat(n, a) == Word.to_nat(n, b) : Nat} -> {a == b : Word(n)} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend adc_sub @n:Nat -> @a:Word(n) -> @b:Word(n) -> @c:Bool -> {Word.adc(n, a, Word.not(n, b), False{}, c) == Word.adc(n, a, b, True{}, c) : Word(n)} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend sub_nat @+n:Nat -> @+a:Word(n) -> @+b:Word(n) -> @+d:Nat -> @h:{Word.to_nat(n, a) == Nat.add(Word.to_nat(n, b), d) : Nat} -> {Word.to_nat(n, Word.sub(n, a, b)) == d : Nat} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend add_assoc @+n:Nat -> @+a:Word(n) -> @+b:Word(n) -> @+c:Word(n) -> {Word.add(n, a, Word.add(n, b, c)) == Word.add(n, Word.add(n, a, b), c) : Word(n)} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend add_exact @+n:Nat -> @+a:Word(n) -> @+b:Word(n) -> @+g:Nat -> @h:{1n+Nat.add(Nat.add(Word.to_nat(n, a), Word.to_nat(n, b)), g) == 0x340691c4c9cfde2764a3ed46e48d644a/word.pow2(n) : Nat} -> {Word.to_nat(n, Word.add(n, a, b)) == Nat.add(Word.to_nat(n, a), Word.to_nat(n, b)) : Nat} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend shl_put @n:Nat -> @+c:Bool -> @+w:Word(n) -> {Nat.add(Word.to_nat(n, Word.shl.put(n, c, w)), 0x340691c4c9cfde2764a3ed46e48d644a/word.scale(0x340691c4c9cfde2764a3ed46e48d644a/word.top(n, c, w), 0x340691c4c9cfde2764a3ed46e48d644a/word.pow2(n))) == Nat.add(0x340691c4c9cfde2764a3ed46e48d644a/word.b2n(c), Nat.double(Word.to_nat(n, w))) : Nat} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend shl_nat @n:Nat -> @w:Word(n) -> {Nat.add(Word.to_nat(n, Word.shl(n, w)), 0x340691c4c9cfde2764a3ed46e48d644a/word.scale(0x340691c4c9cfde2764a3ed46e48d644a/word.top(n, False{}, w), 0x340691c4c9cfde2764a3ed46e48d644a/word.pow2(n))) == Nat.double(Word.to_nat(n, w)) : Nat} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend shr_pad @n:Nat -> @w:Word(n) -> {Word.to_nat(1n+n, Word.shr.pad(n, w)) == Word.to_nat(n, w) : Nat} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend shr_nat @n:Nat -> @w:Word(n) -> {Nat.add(0x340691c4c9cfde2764a3ed46e48d644a/word.b2n(0x340691c4c9cfde2764a3ed46e48d644a/word.lsb(n, w)), Nat.double(Word.to_nat(n, Word.shr(n, w)))) == Word.to_nat(n, w) : Nat} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend cmp_nat @n:Nat -> @a:Word(n) -> @b:Word(n) -> {Word.cmp(n, a, b) == Nat.cmp(Word.to_nat(n, a), Word.to_nat(n, b)) : Cmp} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend u32_xor_comm @a:U32 -> @b:U32 -> {U32.xor(a, b) == U32.xor(b, a) : U32} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend u32_and_comm @a:U32 -> @b:U32 -> {U32.and(a, b) == U32.and(b, a) : U32} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend u32_or_comm @a:U32 -> @b:U32 -> {U32.or(a, b) == U32.or(b, a) : U32} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend u32_xor_assoc @a:U32 -> @b:U32 -> @c:U32 -> {U32.xor(a, U32.xor(b, c)) == U32.xor(U32.xor(a, b), c) : U32} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend u32_and_assoc @a:U32 -> @b:U32 -> @c:U32 -> {U32.and(a, U32.and(b, c)) == U32.and(U32.and(a, b), c) : U32} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend u32_or_assoc @a:U32 -> @b:U32 -> @c:U32 -> {U32.or(a, U32.or(b, c)) == U32.or(U32.or(a, b), c) : U32} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend u32_add_assoc @a:U32 -> @b:U32 -> @c:U32 -> {U32.add(a, U32.add(b, c)) == U32.add(U32.add(a, b), c) : U32} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend u32_add_zero @a:U32 -> {U32.add(a, 0) == a : U32} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend u32_xor_zero @a:U32 -> {U32.xor(a, 0) == a : U32} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend u32_xor_self @+a:U32 -> {U32.xor(a, a) == 0 : U32} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend u32_not_not @a:U32 -> {U32.not(U32.not(a)) == a : U32} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend u32_to_nat_inj @a:U32 -> @b:U32 -> @h:{U32.to_nat(a) == U32.to_nat(b) : Nat} -> {a == b : U32} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend u32_sub_nat @+a:U32 -> @+b:U32 -> @+d:Nat -> @h:{U32.to_nat(a) == Nat.add(U32.to_nat(b), d) : Nat} -> {U32.to_nat(U32.sub(a, b)) == d : Nat} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend u32_cmp_nat @a:U32 -> @b:U32 -> {U32.cmp(a, b) == Nat.cmp(U32.to_nat(a), U32.to_nat(b)) : Cmp} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend u32_lt_nat @+a:U32 -> @+b:U32 -> {U32.is_lt(a, b) == Nat.is_lt(U32.to_nat(a), U32.to_nat(b)) : Bool} 0x340691c4c9cfde2764a3ed46e48d644a/LAWS.bend u32_le_nat @+a:U32 -> @+b:U32 -> {U32.is_le(a, b) == Nat.is_le(U32.to_nat(a), U32.to_nat(b)) : Bool} 0x39d8166231e68361eb37e8bef9287b8a/bend_tensors.bend VecT @n:Nat -> Data 0x39d8166231e68361eb37e8bef9287b8a/bend_tensors.bend MatT @r:Nat -> @c:Nat -> Data 0x3bdc0c9f5265bb49f7fc76b61f529f24/buffer_proof.bend correct @a:Array -> @+length:Nat -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/sha256.sha256(a, length) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/buffer.result(0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.hash(a, length)) : Maybe<&1, Array>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/buffer_proof.bend digest_size @s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {Pair.snd(Array, U32, Array.size(U32, 0x3bdc0c9f5265bb49f7fc76b61f529f24/buffer.digest(s))) == 8 : U32} 0x3bdc0c9f5265bb49f7fc76b61f529f24/buffer_proof.bend digest_words @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {words(0x3bdc0c9f5265bb49f7fc76b61f529f24/buffer.digest(s)) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/fips.digest(s) : List<&2, U32>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/buffer_proof.bend observe_digest @+r:Maybe<&2, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State> -> {observe(0x3bdc0c9f5265bb49f7fc76b61f529f24/buffer.result(r)) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.digest_result(r) : Maybe<&2, List<&2, U32>>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/buffer_proof.bend full_reified @-a:Array -> @+length:Nat -> @view:Sigma<&2, &1, 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_array_proof.Tree, t => {a == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_array_proof.thaw(t) : Array}> -> {observe(0x3bdc0c9f5265bb49f7fc76b61f529f24/sha256.sha256(a, length)) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.sha256(a, length) : Maybe<&2, List<&2, U32>>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/buffer_proof.bend full_correct @a:Array -> @+length:Nat -> {observe(0x3bdc0c9f5265bb49f7fc76b61f529f24/sha256.sha256(a, length)) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.sha256(a, length) : Maybe<&2, List<&2, U32>>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend octets_correct @+width:Nat -> @+n:Nat -> @+acc:List<&2, U32> -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.length_octets(width, n, acc) == List.append(&2, U32, 0x3bdc0c9f5265bb49f7fc76b61f529f24/fips.octets(width, n), acc) : List<&2, U32>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend length_correct @+n:Nat -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.bit_length(n) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/fips.length_field(n) : List<&2, U32>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend nth_correct @xs:List<&2, U32> -> @n:Nat -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.get(xs, n) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/fips.nth(xs, n) : U32} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend next_correct @+hs:List<&2, U32> -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.next_word(hs) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/fips.recurrence(hs) : U32} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend extension_correct @+n:Nat -> @+hs:List<&2, U32> -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.expand(n, hs) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/fips.extension(n, hs) : List<&2, U32>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend schedule_correct @+extra:Nat -> @+block:List<&2, U32> -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.schedule(extra, block) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/fips.schedule(extra, block) : List<&2, U32>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend step_correct @s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @k:U32 -> @w:U32 -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.step(s, k, w) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/fips.step(s, k, w) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend rounds_correct @+ks:List<&2, U32> -> @+ws:List<&2, U32> -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.rounds(ks, ws, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/fips.rounds(ks, ws, s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend feedforward_correct @x:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @y:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.feedforward(x, y) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/fips.feedforward(x, y) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend compression_correct @+ws:List<&2, U32> -> @+ks:List<&2, U32> -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.compress(ws, ks, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/fips.compress(ws, ks, s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend expanded_rounds_correct @+n:Nat -> @+history:List<&2, U32> -> @+ks:List<&2, U32> -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.expanded_rounds(n, history, ks, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.rounds(ks, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.expand(n, history), s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend schedule_rounds_correct @+ws:List<&2, U32> -> @+extra:Nat -> @+history:List<&2, U32> -> @+ks:List<&2, U32> -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.schedule_rounds(ws, extra, history, ks, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.rounds(ks, List.append(&2, U32, ws, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.expand(extra, history)), s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend fused_compress_correct @+block:List<&2, U32> -> @+extra:Nat -> @+ks:List<&2, U32> -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.fused_compress(block, extra, ks, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.compress(0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.schedule(extra, block), ks, s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend fused_compress_slow_correct @+block:List<&2, U32> -> @+extra:Nat -> @+ks:List<&2, U32> -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.fused_compress_slow(block, extra, ks, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.compress(0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.schedule(extra, block), ks, s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend window_rounds_correct @+q:Nat -> @+a:U32 -> @+b:U32 -> @+c:U32 -> @+d:U32 -> @+e:U32 -> @+f:U32 -> @+g:U32 -> @+h:U32 -> @+i:U32 -> @+j:U32 -> @+k:U32 -> @+l:U32 -> @+m:U32 -> @+n:U32 -> @+o:U32 -> @+p:U32 -> @+rest:List<&2, U32> -> @+ks:List<&2, U32> -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p}, ks, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.expanded_rounds(q, a <> b <> c <> d <> e <> f <> g <> h <> i <> j <> k <> l <> m <> n <> o <> p <> rest, ks, s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend window_schedule_rounds_correct @+ws:List<&2, U32> -> @+extra:Nat -> @+a:U32 -> @+b:U32 -> @+c:U32 -> @+d:U32 -> @+e:U32 -> @+f:U32 -> @+g:U32 -> @+h:U32 -> @+i:U32 -> @+j:U32 -> @+k:U32 -> @+l:U32 -> @+m:U32 -> @+n:U32 -> @+o:U32 -> @+p:U32 -> @+rest:List<&2, U32> -> @+ks:List<&2, U32> -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_schedule_rounds(ws, extra, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p}, ks, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.schedule_rounds(ws, extra, a <> b <> c <> d <> e <> f <> g <> h <> i <> j <> k <> l <> m <> n <> o <> p <> rest, ks, s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend window_compress16_correct @+a:U32 -> @+b:U32 -> @+c:U32 -> @+d:U32 -> @+e:U32 -> @+f:U32 -> @+g:U32 -> @+h:U32 -> @+i:U32 -> @+j:U32 -> @+k:U32 -> @+l:U32 -> @+m:U32 -> @+n:U32 -> @+o:U32 -> @+p:U32 -> @+extra:Nat -> @+ks:List<&2, U32> -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_compress16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, extra, ks, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.fused_compress([a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p], extra, ks, s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend digest_correct @s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.digest(s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/fips.digest(s) : List<&2, U32>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend block_bytes_correct @+bytes:List<&2, U32> -> @+extra:Nat -> @+ks:List<&2, U32> -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.block_bytes(bytes, extra, ks, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/fips.blocks(0x3bdc0c9f5265bb49f7fc76b61f529f24/fips.schedules(0x3bdc0c9f5265bb49f7fc76b61f529f24/fips.words(bytes), extra), ks, s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend suffix_correct @+n:Nat -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.suffix(n) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/fips.padding_suffix(n) : List<&2, U32>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend mod_quotient @+x:Nat -> @+m:Nat -> @+d:Nat -> @+e:Nat -> @+r:Nat -> {Pair.snd(Nat, Nat, Nat.divmod.go(x, m, d, r)) == Pair.snd(Nat, Nat, Nat.divmod.go(x, m, e, r)) : Nat} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend mod_shift @+x:Nat -> {Nat.mod(Nat.add(64n, x), 64n) == Nat.mod(x, 64n) : Nat} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend mod_tail @+x:Nat -> @+k:Nat -> {Nat.mod(Nat.add(x, mul64(k)), 64n) == Nat.mod(x, 64n) : Nat} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr64_correct @+q:Nat -> @+win:0x3bdc0c9f5265bb49f7fc76b61f529f24/core.RoundWindow -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr64(q, win, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, win, [], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr63_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr63(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr62_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr62(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr61_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr61(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr60_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr60(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr59_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr59(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr58_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr58(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr57_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr57(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr56_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr56(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr55_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr55(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr54_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr54(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr53_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr53(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr52_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr52(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr51_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr51(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr50_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr50(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr49_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr49(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr48_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr48(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr47_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr47(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr46_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr46(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr45_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr45(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr44_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr44(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr43_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr43(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr42_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr42(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr41_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr41(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr40_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr40(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr39_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr39(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr38_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr38(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr37_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr37(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr36_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr36(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr35_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr35(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr34_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr34(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr33_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr33(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr32_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr32(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr31_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr31(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr30_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr30(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr29_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr29(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr28_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr28(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr27_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr27(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr26_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr26(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr25_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr25(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr24_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr24(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr23_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr23(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr22_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr22(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr21_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr21(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr20_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr20(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr19_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr19(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr18_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr18(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr17_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr17(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend kr16_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.kr16(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_rounds(q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend fips16_correct @+a:U32 -> @+b:U32 -> @+c:U32 -> @+d:U32 -> @+e:U32 -> @+f:U32 -> @+g:U32 -> @+h:U32 -> @+i:U32 -> @+j:U32 -> @+k:U32 -> @+l:U32 -> @+m:U32 -> @+n:U32 -> @+o:U32 -> @+p:U32 -> @+q:Nat -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.fips_compress16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.window_compress16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.round_constants, s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend stream_correct @+bytes:List<&2, U32> -> @+k:Nat -> @+extra:Nat -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.stream(bytes, mul64(k), extra, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.block_bytes(List.append(&2, U32, bytes, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.suffix(Nat.add(List.length(&2, U32, bytes), mul64(k)))), extra, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.round_constants, s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/conformance.bend sha256_correct @+bytes:List<&2, U32> -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.sha256(bytes) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/fips.hash(bytes, 48n, 0x3bdc0c9f5265bb49f7fc76b61f529f24/core_model.round_constants) : List<&2, U32>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/CORRECTNESS.bend digest_octets_length @s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {List.length(&2, U32, 0x3bdc0c9f5265bb49f7fc76b61f529f24/fips.digest_octets(0x3bdc0c9f5265bb49f7fc76b61f529f24/fips.digest(s))) == 32n : Nat} 0x3bdc0c9f5265bb49f7fc76b61f529f24/LAWS.bend constants_correct {0x3bdc0c9f5265bb49f7fc76b61f529f24/legacy_model.constants == 0x3bdc0c9f5265bb49f7fc76b61f529f24/fips.constants : List<&2, U32>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/LAWS.bend sha256_correct @+bytes:List<&2, U32> -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/legacy_model.sha256(bytes) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/fips.sha256(bytes) : List<&2, U32>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/LAWS.bend digest_bytes_correct @+ws:List<&2, U32> -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/legacy_model.digest_bytes(ws) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/fips.digest_octets(ws) : List<&2, U32>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/LAWS.bend sha256_bytes_correct @+bytes:List<&2, U32> -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/legacy_model.sha256_bytes(bytes) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/fips.sha256_bytes(bytes) : List<&2, U32>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/LAWS.bend sha256_bytes_length @+bytes:List<&2, U32> -> {List.length(&2, U32, 0x3bdc0c9f5265bb49f7fc76b61f529f24/legacy_model.sha256_bytes(bytes)) == 32n : Nat} 0x3bdc0c9f5265bb49f7fc76b61f529f24/LAWS.bend sha256_packed_correct @words:Array -> @+byte_length:Nat -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/legacy_model.sha256_packed(words, byte_length) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.sha256(words, byte_length) : Maybe<&2, List<&2, U32>>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/LAWS.bend sha256_array_correct @words:Array -> @+byte_length:Nat -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/sha256.sha256(words, byte_length) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/buffer.result(0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.hash(words, byte_length)) : Maybe<&1, Array>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/list_proofs.bend append_assoc @-A:Data -> @xs:List<&2, A> -> @ys:List<&2, A> -> @zs:List<&2, A> -> {List.append(&2, A, List.append(&2, A, xs, ys), zs) == List.append(&2, A, xs, List.append(&2, A, ys, zs)) : List<&2, A>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/list_proofs.bend reverse_twice @-A:Data -> @xs:List<&2, A> -> @acc:List<&2, A> -> @ys:List<&2, A> -> {List.reverse.go(&2, A, List.reverse.go(&2, A, xs, acc), ys) == List.reverse.go(&2, A, acc, List.append(&2, A, xs, ys)) : List<&2, A>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/list_proofs.bend reverse_append @-A:Data -> @xs:List<&2, A> -> @ys:List<&2, A> -> {List.reverse.go(&2, A, List.reverse(&2, A, xs), ys) == List.append(&2, A, xs, ys) : List<&2, A>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/list_proofs.bend add_succ @n:Nat -> @m:Nat -> {Nat.add(n, 1n+m) == 1n+Nat.add(n, m) : Nat} 0x3bdc0c9f5265bb49f7fc76b61f529f24/list_proofs.bend add_zero @n:Nat -> {Nat.add(n, 0n) == n : Nat} 0x3bdc0c9f5265bb49f7fc76b61f529f24/list_proofs.bend append_assoc_reverse @-A:Data -> @+xs:List<&2, A> -> @+ys:List<&2, A> -> @+zs:List<&2, A> -> {List.append(&2, A, xs, List.append(&2, A, ys, zs)) == List.append(&2, A, List.append(&2, A, xs, ys), zs) : List<&2, A>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/list_proofs.bend add_swap @+n:Nat -> @+k:Nat -> @+m:Nat -> {Nat.add(n, Nat.add(k, m)) == Nat.add(k, Nat.add(n, m)) : Nat} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_array_proof.bend reify @a:Array -> Sigma<&2, &1, Tree, t => {a == thaw(t) : Array}> 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_array_proof.bend reify_node @-l:Array -> @-r:Array -> @left:Sigma<&2, &1, Tree, t => {l == thaw(t) : Array}> -> @right:Sigma<&2, &1, Tree, t => {r == thaw(t) : Array}> -> Sigma<&2, &1, Tree, t => {ANode{l, r} == thaw(t) : Array}> 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend compress_correct @+a:U32 -> @+b:U32 -> @+c:U32 -> @+d:U32 -> @+e:U32 -> @+f:U32 -> @+g:U32 -> @+h:U32 -> @+i:U32 -> @+j:U32 -> @+k:U32 -> @+l:U32 -> @+m:U32 -> @+n:U32 -> @+o:U32 -> @+p:U32 -> @+extra:Nat -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/core.fips_compress16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, extra, s) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.compress([a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p], extra, s) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend read16_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read16(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 0n, index, False{}, 0n, 0n, s, [w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend read15_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read15(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 1n, index, False{}, 0n, 0n, s, [w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend read14_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read14(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 2n, index, False{}, 0n, 0n, s, [w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend read13_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read13(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 3n, index, False{}, 0n, 0n, s, [w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend read12_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read12(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 4n, index, False{}, 0n, 0n, s, [w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend read11_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read11(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 5n, index, False{}, 0n, 0n, s, [w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend read10_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read10(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 6n, index, False{}, 0n, 0n, s, [w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend read9_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read9(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 7n, index, False{}, 0n, 0n, s, [w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend read8_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read8(extra, index, s, w0, w1, w2, w3, w4, w5, w6, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 8n, index, False{}, 0n, 0n, s, [w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend read7_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read7(extra, index, s, w0, w1, w2, w3, w4, w5, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 9n, index, False{}, 0n, 0n, s, [w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend read6_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read6(extra, index, s, w0, w1, w2, w3, w4, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 10n, index, False{}, 0n, 0n, s, [w4, w3, w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend read5_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read5(extra, index, s, w0, w1, w2, w3, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 11n, index, False{}, 0n, 0n, s, [w3, w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend read4_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read4(extra, index, s, w0, w1, w2, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 12n, index, False{}, 0n, 0n, s, [w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend read3_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @+w1:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read3(extra, index, s, w0, w1, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 13n, index, False{}, 0n, 0n, s, [w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend read2_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+w0:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read2(extra, index, s, w0, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 14n, index, False{}, 0n, 0n, s, [w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend read1_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.read1(extra, index, s, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 15n, index, False{}, 0n, 0n, s, [], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend partial_correct @+w:U32 -> @+delta:Nat -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.partial(w, delta) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.partial(w, delta) : U32} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend pad_choose_correct @+c:Cmp -> @+w:U32 -> @+delta:Nat -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_choose(c, w, delta) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.pad_choose(c, w, delta) : U32} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend pad_word_correct @+w:U32 -> @+pos:Nat -> @+remain:Nat -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w, pos, remain) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.pad_word(w, pos, remain) : U32} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend tail_word_correct @+short:Bool -> @+w:U32 -> @+pos:Nat -> @+remain:Nat -> @+length:U32 -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.length_word(short, 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w, pos, remain), length) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.length_word(short, 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.pad_word(w, pos, remain), length) : U32} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend padded_words_correct @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+remain:Nat -> @+total:Nat -> {[0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w0, 0n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w1, 4n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w2, 8n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w3, 12n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w4, 16n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w5, 20n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w6, 24n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w7, 28n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w8, 32n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w9, 36n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w10, 40n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w11, 44n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w12, 48n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w13, 52n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.length_word(Nat.is_lt(remain, 56n), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w14, 56n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.len_hi(total)), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.length_word(Nat.is_lt(remain, 56n), 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad_word(w15, 60n, remain), 0x3bdc0c9f5265bb49f7fc76b61f529f24/core.len_lo(total))] == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.padded_words([w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15], 0n, remain, total) : List<&2, U32>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend pad16_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad16(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 0n, index, True{}, remain, total, s, [w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend pad15_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad15(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 1n, index, True{}, remain, total, s, [w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend pad14_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad14(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 2n, index, True{}, remain, total, s, [w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend pad13_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad13(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 3n, index, True{}, remain, total, s, [w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend pad12_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad12(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 4n, index, True{}, remain, total, s, [w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend pad11_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad11(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 5n, index, True{}, remain, total, s, [w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend pad10_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad10(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 6n, index, True{}, remain, total, s, [w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend pad9_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad9(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 7n, index, True{}, remain, total, s, [w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend pad8_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad8(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 8n, index, True{}, remain, total, s, [w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend pad7_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad7(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 9n, index, True{}, remain, total, s, [w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend pad6_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad6(extra, index, s, remain, total, w0, w1, w2, w3, w4, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 10n, index, True{}, remain, total, s, [w4, w3, w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend pad5_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad5(extra, index, s, remain, total, w0, w1, w2, w3, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 11n, index, True{}, remain, total, s, [w3, w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend pad4_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad4(extra, index, s, remain, total, w0, w1, w2, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 12n, index, True{}, remain, total, s, [w2, w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend pad3_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad3(extra, index, s, remain, total, w0, w1, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 13n, index, True{}, remain, total, s, [w1, w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend pad2_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad2(extra, index, s, remain, total, w0, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 14n, index, True{}, remain, total, s, [w0], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend pad1_correct @+extra:Nat -> @+index:U32 -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @+remain:Nat -> @+total:Nat -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.pad1(extra, index, s, remain, total, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.gather(extra, 15n, index, True{}, remain, total, s, [], pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend final_extra_correct @+extra:Nat -> @+more:Bool -> @+total:Nat -> @pair:Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.final_extra(extra, more, total, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.final_extra(extra, more, total, pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend blocks_correct @+extra:Nat -> @+n:Nat -> @+index:U32 -> @+remain:Nat -> @+total:Nat -> @pair:Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.blocks(extra, n, index, remain, total, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.blocks(extra, n, index, remain, total, pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend blocks_zero_reified @+extra:Nat -> @+index:U32 -> @+remain:Nat -> @+total:Nat -> @-a:Array -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @view:Sigma<&2, &1, 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_array_proof.Tree, t => {a == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_array_proof.thaw(t) : Array}> -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.blocks(extra, 0n, index, remain, total, (a, s)) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.blocks(extra, 0n, index, remain, total, (a, s)) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend blocks_step_reified @+p:Nat -> @+extra:Nat -> @+index:U32 -> @+remain:Nat -> @+total:Nat -> @-a:Array -> @+s:0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State -> @view:Sigma<&2, &1, 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_array_proof.Tree, t => {a == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_array_proof.thaw(t) : Array}> -> @recurse:(@pair:Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.blocks(extra, p, U32.add(index, 16), remain, total, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.blocks(extra, p, U32.add(index, 16), remain, total, pair) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)}) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.blocks(extra, 1n+p, index, remain, total, (a, s)) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.blocks(extra, 1n+p, index, remain, total, (a, s)) : Pair(Array, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State)} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend hash_unchecked_correct @a:Array -> @+length:Nat -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.hash_unchecked(a, length) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.hash_unchecked(a, length) : 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend checked_correct @+valid:Bool -> @a:Array -> @+length:Nat -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.checked(valid, a, length) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.checked(valid, a, length) : Maybe<&2, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend sized_correct @+length:Nat -> @pair:Pair(Array, U32) -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.sized(length, pair) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.sized(length, pair) : Maybe<&2, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend hash_correct @a:Array -> @+length:Nat -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/packed.hash(a, length) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.hash(a, length) : Maybe<&2, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend digest_result_correct @+r:Maybe<&2, 0x3bdc0c9f5265bb49f7fc76b61f529f24/state.State> -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/legacy_model.packed_digest(r) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.digest_result(r) : Maybe<&2, List<&2, U32>>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend sha256_correct @a:Array -> @+length:Nat -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/legacy_model.sha256_packed(a, length) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.sha256(a, length) : Maybe<&2, List<&2, U32>>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_proof.bend sha256_reified @-a:Array -> @+length:Nat -> @view:Sigma<&2, &1, 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_array_proof.Tree, t => {a == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_array_proof.thaw(t) : Array}> -> {0x3bdc0c9f5265bb49f7fc76b61f529f24/legacy_model.sha256_packed(a, length) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/packed_spec.sha256(a, length) : Maybe<&2, List<&2, U32>>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/padding_proof.bend zeros_correct @r:Nat -> {Nat.mod(Nat.sub(119n, r), 64n) == 0x3bdc0c9f5265bb49f7fc76b61f529f24/fips.zero_count(r) : Nat} 0x3bdc0c9f5265bb49f7fc76b61f529f24/PROOF.bend empty_vector {0x3bdc0c9f5265bb49f7fc76b61f529f24/legacy_model.sha256([]) == [3820012610, 2566659092, 2600203464, 2574235940, 665731556, 1687917388, 2761267483, 2018687061] : List<&2, U32>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/PROOF.bend abc_vector {0x3bdc0c9f5265bb49f7fc76b61f529f24/legacy_model.sha256([97, 98, 99]) == [3128432319, 2399260650, 1094795486, 1571693091, 2953011619, 2518121116, 3021012833, 4060091821] : List<&2, U32>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/PROOF.bend padding_boundary_vector {0x3bdc0c9f5265bb49f7fc76b61f529f24/legacy_model.sha256(0x3bdc0c9f5265bb49f7fc76b61f529f24/legacy_model.ascii("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq")) == [613247585, 3523623096, 3854575251, 205414457, 2738676825, 1694441831, 4142722516, 433784513] : List<&2, U32>} 0x3bdc0c9f5265bb49f7fc76b61f529f24/PROOF.bend multiblock_vector {0x3bdc0c9f5265bb49f7fc76b61f529f24/legacy_model.sha256(0x3bdc0c9f5265bb49f7fc76b61f529f24/legacy_model.ascii("abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu")) == [3478853287, 2024768384, 57468318, 2063897143, 186948369, 3908074065, 2947302659, 2063526353] : List<&2, U32>} 0x48cee57f42dae6ba4c727fbf982cdd4d/LAWS.bend permutation_rounds @+n:Nat -> @+i:Nat -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/permutation.rounds(n, i, s) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/permutation.rounds(n, i, s) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/LAWS.bend digest_size @s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> {Pair.snd(Array, U32, Array.size(U32, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.digest(s))) == 8 : U32} 0x48cee57f42dae6ba4c727fbf982cdd4d/LAWS.bend capacity_rejection @a:Array -> @+n:Nat -> @+capacity:U32 -> @invalid:{Nat.is_le(n, Nat.mul(4n, U32.to_nat(capacity))) == False{} : Bool} -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.sized(24n, n, (a, capacity)) == None{} : Maybe<&1, Array>} 0x48cee57f42dae6ba4c727fbf982cdd4d/LAWS.bend packed_sponge_correct @+r:Nat -> @a:Array -> @+length:Nat -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.keccak256_rounds(r, a, length) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.keccak256_rounds(r, a, length) : Maybe<&1, Array>} 0x48cee57f42dae6ba4c727fbf982cdd4d/LAWS.bend ethereum_round_count @a:Array -> @+length:Nat -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.keccak256(a, length) == 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.keccak256_rounds(24n, a, length) : Maybe<&1, Array>} 0x48cee57f42dae6ba4c727fbf982cdd4d/LAWS.bend ethereum_keccak256 @a:Array -> @+length:Nat -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.keccak256(a, length) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.keccak256_rounds(24n, a, length) : Maybe<&1, Array>} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/api.bend rejected @a:Array -> @n:Nat -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.checked(24n, False{}, a, n) == None{} : Maybe<&1, Array>} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/api.bend digest_size @s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> {Pair.snd(Array, U32, Array.size(U32, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.digest(s))) == 8 : U32} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/api.bend digest_word0 @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> {Pair.snd(Array, U32, Array.get(U32, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.digest(s), 0)) == word0(s) : U32} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/api.bend digest_word1 @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> {Pair.snd(Array, U32, Array.get(U32, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.digest(s), 1)) == word1(s) : U32} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/api.bend digest_word2 @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> {Pair.snd(Array, U32, Array.get(U32, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.digest(s), 2)) == word2(s) : U32} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/api.bend digest_word3 @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> {Pair.snd(Array, U32, Array.get(U32, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.digest(s), 3)) == word3(s) : U32} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/api.bend digest_word4 @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> {Pair.snd(Array, U32, Array.get(U32, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.digest(s), 4)) == word4(s) : U32} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/api.bend digest_word5 @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> {Pair.snd(Array, U32, Array.get(U32, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.digest(s), 5)) == word5(s) : U32} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/api.bend digest_word6 @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> {Pair.snd(Array, U32, Array.get(U32, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.digest(s), 6)) == word6(s) : U32} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/api.bend digest_word7 @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> {Pair.snd(Array, U32, Array.get(U32, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.digest(s), 7)) == word7(s) : U32} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/api.bend capacity_gate @a:Array -> @+n:Nat -> @+capacity:U32 -> @invalid:{Nat.is_le(n, Nat.mul(4n, U32.to_nat(capacity))) == False{} : Bool} -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.sized(24n, n, (a, capacity)) == None{} : Maybe<&1, Array>} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/api.bend suffix0 @w:U32 -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.partial(w, 0n) == 1 : U32} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/api.bend suffix1 @+w:U32 -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.partial(w, 1n) == U32.or(U32.and(w, 255), 256) : U32} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/api.bend suffix2 @+w:U32 -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.partial(w, 2n) == U32.or(U32.and(w, 65535), 65536) : U32} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/api.bend suffix3 @+w:U32 -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.partial(w, 3n) == U32.or(U32.and(w, 16777215), 16777216) : U32} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/api.bend whole_word @+w:U32 -> @n:Nat -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.partial(w, 4n+n) == w : U32} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/api.bend empty_suffix @w:U32 -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w, 0n, 0n) == 1 : U32} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/api.bend empty_last_word @w:U32 -> {U32.or(0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w, 132n, 0n), 2147483648) == 2147483648 : U32} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/api.bend combined_padding @+w:U32 -> {U32.or(0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w, 132n, 135n), 2147483648) == U32.or(U32.or(U32.and(w, 16777215), 16777216), 2147483648) : U32} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/array.bend reify @a:Array -> Sigma<&2, &1, Tree, t => {a == thaw(t) : Array}> 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/array.bend reify_node @-l:Array -> @-r:Array -> @left:Sigma<&2, &1, Tree, t => {l == thaw(t) : Array}> -> @right:Sigma<&2, &1, Tree, t => {r == thaw(t) : Array}> -> Sigma<&2, &1, Tree, t => {ANode{l, r} == thaw(t) : Array}> 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/permutation.bend round_correct @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+rc:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.Lane -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/permutation.round(s, rc) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/permutation.round(s, rc) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/permutation.bend constants_correct @+n:Nat -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/permutation.constant(n) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/permutation.constant(n) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.Lane} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/permutation.bend pair_step @+n:Nat -> @+i:Nat -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/permutation.rounds(2n+n, i, s) == 0x48cee57f42dae6ba4c727fbf982cdd4d/src/permutation.rounds(n, 2n+i, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/permutation.round(0x48cee57f42dae6ba4c727fbf982cdd4d/src/permutation.round(s, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/permutation.constant(i)), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/permutation.constant(1n+i))) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/permutation.bend single_step @+i:Nat -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/permutation.rounds(1n, i, s) == 0x48cee57f42dae6ba4c727fbf982cdd4d/src/permutation.round(s, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/permutation.constant(i)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/permutation.bend step_correct @+i:Nat -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/permutation.round(s, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/permutation.constant(i)) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/permutation.round(s, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/permutation.constant(i)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/permutation.bend two_correct @+i:Nat -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/permutation.round(0x48cee57f42dae6ba4c727fbf982cdd4d/src/permutation.round(s, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/permutation.constant(i)), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/permutation.constant(1n+i)) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/permutation.round(0x48cee57f42dae6ba4c727fbf982cdd4d/spec/permutation.round(s, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/permutation.constant(i)), 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/permutation.constant(1n+i)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/permutation.bend rounds_correct @+n:Nat -> @+i:Nat -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/permutation.rounds(n, i, s) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/permutation.rounds(n, i, s) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend mix_correct @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @+w30:U32 -> @+w31:U32 -> @+w32:U32 -> @+w33:U32 -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.mix(s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, w31, w32, w33) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.inject(s, [w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, w31, w32, w33]) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend compress_correct @+r:Nat -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @+w30:U32 -> @+w31:U32 -> @+w32:U32 -> @+w33:U32 -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/permutation.rounds(r, 0n, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.mix(s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, w31, w32, w33)) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/permutation.rounds(r, 0n, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.inject(s, [w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, w31, w32, w33])) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read33_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @+w30:U32 -> @+w31:U32 -> @+w32:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read33(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, w31, w32, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 0n, index, 34, False{}, 0n, s, [w32, w31, w30, w29, w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read32_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @+w30:U32 -> @+w31:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read32(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, w31, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 1n, index, 33, False{}, 0n, s, [w31, w30, w29, w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read31_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @+w30:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read31(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 2n, index, 32, False{}, 0n, s, [w30, w29, w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read30_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read30(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 3n, index, 31, False{}, 0n, s, [w29, w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read29_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read29(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 4n, index, 30, False{}, 0n, s, [w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read28_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read28(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 5n, index, 29, False{}, 0n, s, [w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read27_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read27(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 6n, index, 28, False{}, 0n, s, [w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read26_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read26(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 7n, index, 27, False{}, 0n, s, [w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read25_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read25(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 8n, index, 26, False{}, 0n, s, [w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read24_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read24(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 9n, index, 25, False{}, 0n, s, [w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read23_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read23(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 10n, index, 24, False{}, 0n, s, [w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read22_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read22(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 11n, index, 23, False{}, 0n, s, [w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read21_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read21(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 12n, index, 22, False{}, 0n, s, [w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read20_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read20(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 13n, index, 21, False{}, 0n, s, [w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read19_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read19(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 14n, index, 20, False{}, 0n, s, [w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read18_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read18(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 15n, index, 19, False{}, 0n, s, [w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read17_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read17(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 16n, index, 18, False{}, 0n, s, [w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read16_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read16(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 17n, index, 17, False{}, 0n, s, [w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read15_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read15(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 18n, index, 16, False{}, 0n, s, [w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read14_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read14(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 19n, index, 15, False{}, 0n, s, [w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read13_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read13(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 20n, index, 14, False{}, 0n, s, [w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read12_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read12(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 21n, index, 13, False{}, 0n, s, [w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read11_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read11(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 22n, index, 12, False{}, 0n, s, [w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read10_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read10(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 23n, index, 11, False{}, 0n, s, [w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read9_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read9(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 24n, index, 10, False{}, 0n, s, [w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read8_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read8(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 25n, index, 9, False{}, 0n, s, [w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read7_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read7(r, index, s, w0, w1, w2, w3, w4, w5, w6, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 26n, index, 8, False{}, 0n, s, [w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read6_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read6(r, index, s, w0, w1, w2, w3, w4, w5, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 27n, index, 7, False{}, 0n, s, [w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read5_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read5(r, index, s, w0, w1, w2, w3, w4, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 28n, index, 6, False{}, 0n, s, [w4, w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read4_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read4(r, index, s, w0, w1, w2, w3, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 29n, index, 5, False{}, 0n, s, [w3, w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read3_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read3(r, index, s, w0, w1, w2, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 30n, index, 4, False{}, 0n, s, [w2, w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read2_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read2(r, index, s, w0, w1, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 31n, index, 3, False{}, 0n, s, [w1, w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read1_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read1(r, index, s, w0, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 32n, index, 2, False{}, 0n, s, [w0], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend read0_correct @+r:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.read0(r, index, s, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 33n, index, 1, False{}, 0n, s, [], pair) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend padding_correct @+remain:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @+w30:U32 -> @+w31:U32 -> @+w32:U32 -> @+w33:U32 -> {[0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w0, 0n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w1, 4n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w2, 8n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w3, 12n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w4, 16n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w5, 20n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w6, 24n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w7, 28n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w8, 32n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w9, 36n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w10, 40n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w11, 44n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w12, 48n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w13, 52n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w14, 56n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w15, 60n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w16, 64n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w17, 68n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w18, 72n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w19, 76n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w20, 80n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w21, 84n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w22, 88n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w23, 92n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w24, 96n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w25, 100n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w26, 104n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w27, 108n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w28, 112n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w29, 116n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w30, 120n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w31, 124n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w32, 128n, remain), U32.or(0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w33, 132n, remain), 2147483648)] == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.prepare(True{}, [w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, w31, w32, w33], remain) : List<&2, U32>} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend padded_compress_correct @+r:Nat -> @+remain:Nat -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @+w30:U32 -> @+w31:U32 -> @+w32:U32 -> @+w33:U32 -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/permutation.rounds(r, 0n, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.mix(s, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w0, 0n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w1, 4n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w2, 8n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w3, 12n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w4, 16n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w5, 20n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w6, 24n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w7, 28n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w8, 32n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w9, 36n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w10, 40n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w11, 44n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w12, 48n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w13, 52n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w14, 56n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w15, 60n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w16, 64n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w17, 68n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w18, 72n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w19, 76n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w20, 80n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w21, 84n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w22, 88n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w23, 92n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w24, 96n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w25, 100n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w26, 104n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w27, 108n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w28, 112n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w29, 116n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w30, 120n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w31, 124n, remain), 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w32, 128n, remain), U32.or(0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad_word(w33, 132n, remain), 2147483648))) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/permutation.rounds(r, 0n, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.inject(s, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.prepare(True{}, [w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, w31, w32, w33], remain))) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad33_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @+w30:U32 -> @+w31:U32 -> @+w32:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad33(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, w31, w32, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 0n, index, 34, True{}, remain, s, [w32, w31, w30, w29, w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad32_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @+w30:U32 -> @+w31:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad32(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, w31, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 1n, index, 33, True{}, remain, s, [w31, w30, w29, w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad31_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @+w30:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad31(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 2n, index, 32, True{}, remain, s, [w30, w29, w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad30_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad30(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 3n, index, 31, True{}, remain, s, [w29, w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad29_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad29(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 4n, index, 30, True{}, remain, s, [w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad28_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad28(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 5n, index, 29, True{}, remain, s, [w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad27_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad27(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 6n, index, 28, True{}, remain, s, [w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad26_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad26(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 7n, index, 27, True{}, remain, s, [w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad25_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad25(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 8n, index, 26, True{}, remain, s, [w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad24_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad24(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 9n, index, 25, True{}, remain, s, [w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad23_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad23(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 10n, index, 24, True{}, remain, s, [w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad22_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad22(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 11n, index, 23, True{}, remain, s, [w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad21_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad21(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 12n, index, 22, True{}, remain, s, [w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad20_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad20(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 13n, index, 21, True{}, remain, s, [w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad19_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad19(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 14n, index, 20, True{}, remain, s, [w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad18_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad18(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 15n, index, 19, True{}, remain, s, [w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad17_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad17(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 16n, index, 18, True{}, remain, s, [w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad16_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad16(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 17n, index, 17, True{}, remain, s, [w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad15_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad15(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 18n, index, 16, True{}, remain, s, [w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad14_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad14(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 19n, index, 15, True{}, remain, s, [w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad13_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad13(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 20n, index, 14, True{}, remain, s, [w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad12_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad12(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 21n, index, 13, True{}, remain, s, [w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad11_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad11(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 22n, index, 12, True{}, remain, s, [w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad10_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad10(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 23n, index, 11, True{}, remain, s, [w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad9_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad9(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 24n, index, 10, True{}, remain, s, [w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad8_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad8(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 25n, index, 9, True{}, remain, s, [w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad7_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad7(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 26n, index, 8, True{}, remain, s, [w6, w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad6_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad6(r, remain, index, s, w0, w1, w2, w3, w4, w5, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 27n, index, 7, True{}, remain, s, [w5, w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad5_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad5(r, remain, index, s, w0, w1, w2, w3, w4, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 28n, index, 6, True{}, remain, s, [w4, w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad4_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad4(r, remain, index, s, w0, w1, w2, w3, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 29n, index, 5, True{}, remain, s, [w3, w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad3_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad3(r, remain, index, s, w0, w1, w2, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 30n, index, 4, True{}, remain, s, [w2, w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad2_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @+w1:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad2(r, remain, index, s, w0, w1, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 31n, index, 3, True{}, remain, s, [w1, w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad1_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @+w0:U32 -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad1(r, remain, index, s, w0, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 32n, index, 2, True{}, remain, s, [w0], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend pad0_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.pad0(r, remain, index, s, pair) == Pair.snd(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State, 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.gather(r, 33n, index, 1, True{}, remain, s, [], pair)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend absorb_correct @+r:Nat -> @a:Array -> @+index:U32 -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.absorb(r, a, index, s) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.absorb(r, a, index, s) : Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State)} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend finish_correct @+r:Nat -> @a:Array -> @+index:U32 -> @+remain:Nat -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.finish(r, a, index, remain, s) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.finish(r, a, index, remain, s) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend blocks_correct @+r:Nat -> @+n:Nat -> @+index:U32 -> @+remain:Nat -> @pair:Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.blocks(r, n, index, remain, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.blocks(r, n, index, remain, pair) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend blocks_step @+r:Nat -> @+n:Nat -> @+index:U32 -> @+remain:Nat -> @-a:Array -> @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> @view:Sigma<&2, &1, 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/array.Tree, t => {a == 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/array.thaw(t) : Array}> -> @recurse:(@pair:Pair(Array, 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.blocks(r, n, U32.add(index, 34), remain, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.blocks(r, n, U32.add(index, 34), remain, pair) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State}) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.blocks(r, 1n+n, index, remain, (a, s)) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.blocks(r, 1n+n, index, remain, (a, s)) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend unchecked_correct @+r:Nat -> @a:Array -> @+length:Nat -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.unchecked(r, a, length) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.unchecked(r, a, length) : 0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend digest_correct @+s:0x48cee57f42dae6ba4c727fbf982cdd4d/src/types.State -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.digest(s) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.digest(s) : Array} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend checked_true_reified @+r:Nat -> @-a:Array -> @+length:Nat -> @view:Sigma<&2, &1, 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/array.Tree, t => {a == 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/array.thaw(t) : Array}> -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.checked(r, True{}, a, length) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.checked(r, True{}, a, length) : Maybe<&1, Array>} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend checked_correct @+r:Nat -> @+valid:Bool -> @a:Array -> @+length:Nat -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.checked(r, valid, a, length) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.checked(r, valid, a, length) : Maybe<&1, Array>} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend sized_correct @+r:Nat -> @+length:Nat -> @pair:Pair(Array, U32) -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.sized(r, length, pair) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.sized(r, length, pair) : Maybe<&1, Array>} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend hash_correct @+r:Nat -> @a:Array -> @+length:Nat -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.keccak256_rounds(r, a, length) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.keccak256_rounds(r, a, length) : Maybe<&1, Array>} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend ethereum_round_count @a:Array -> @+length:Nat -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.keccak256(a, length) == 0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.keccak256_rounds(24n, a, length) : Maybe<&1, Array>} 0x48cee57f42dae6ba4c727fbf982cdd4d/proofs/sponge.bend public_correct @a:Array -> @+length:Nat -> {0x48cee57f42dae6ba4c727fbf982cdd4d/src/keccak.keccak256(a, length) == 0x48cee57f42dae6ba4c727fbf982cdd4d/spec/sponge.keccak256_rounds(24n, a, length) : Maybe<&1, Array>} 0x4c3090ea8722081700f9d99ea7503e43/bits.bend word_cmp_refl @n:Nat -> @w:Word(n) -> {Word.cmp(n, w, w) == EQ{} : Cmp} 0x4c3090ea8722081700f9d99ea7503e43/bits.bend u32_eq_refl @a:U32 -> {U32.is_eq(a, a) == True{} : Bool} 0x4c3090ea8722081700f9d99ea7503e43/logic.bend demorgan_and @a:Bool -> @b:Bool -> {Bool.not(Bool.and(a, b)) == Bool.or(Bool.not(a), Bool.not(b)) : Bool} 0x4c3090ea8722081700f9d99ea7503e43/logic.bend demorgan_or @a:Bool -> @b:Bool -> {Bool.not(Bool.or(a, b)) == Bool.and(Bool.not(a), Bool.not(b)) : Bool} 0x4c3090ea8722081700f9d99ea7503e43/logic.bend double_neg @a:Bool -> {Bool.not(Bool.not(a)) == a : Bool} 0x4c3090ea8722081700f9d99ea7503e43/logic.bend and_comm @a:Bool -> @b:Bool -> {Bool.and(a, b) == Bool.and(b, a) : Bool} 0x4c3090ea8722081700f9d99ea7503e43/logic.bend or_comm @a:Bool -> @b:Bool -> {Bool.or(a, b) == Bool.or(b, a) : Bool} 0x4c3090ea8722081700f9d99ea7503e43/logic.bend and_idem @a:Bool -> {Bool.and(a, a) == a : Bool} 0x4c3090ea8722081700f9d99ea7503e43/logic.bend or_idem @a:Bool -> {Bool.or(a, a) == a : Bool} 0x4c3090ea8722081700f9d99ea7503e43/logic.bend imp_eq @a:Bool -> @b:Bool -> {imp(a, b) == Bool.or(Bool.not(a), b) : Bool} 0x4c3090ea8722081700f9d99ea7503e43/logic.bend and_distr_or @a:Bool -> @b:Bool -> @c:Bool -> {Bool.and(a, Bool.or(b, c)) == Bool.or(Bool.and(a, b), Bool.and(a, c)) : Bool} 0x4c3090ea8722081700f9d99ea7503e43/logic.bend or_distr_and @a:Bool -> @b:Bool -> @c:Bool -> {Bool.or(a, Bool.and(b, c)) == Bool.and(Bool.or(a, b), Bool.or(a, c)) : Bool} 0x4c3090ea8722081700f9d99ea7503e43/logic.bend xor_assoc @a:Bool -> @b:Bool -> @c:Bool -> {Bool.xor(Bool.xor(a, b), c) == Bool.xor(a, Bool.xor(b, c)) : Bool} 0x4c3090ea8722081700f9d99ea7503e43/logic.bend and_absorb @a:Bool -> @b:Bool -> {Bool.and(a, Bool.or(a, b)) == a : Bool} 0x4c3090ea8722081700f9d99ea7503e43/logic.bend or_absorb @a:Bool -> @b:Bool -> {Bool.or(a, Bool.and(a, b)) == a : Bool} 0x4c3090ea8722081700f9d99ea7503e43/logic.bend xor_self @b:Bool -> {Bool.xor(b, b) == False{} : Bool} 0x4c3090ea8722081700f9d99ea7503e43/logic.bend bool_cmp_refl @b:Bool -> {Bool.cmp(b, b) == EQ{} : Cmp} 0x4c3090ea8722081700f9d99ea7503e43/logic.bend le_refl @a:Nat -> {Nat.is_le(a, a) == True{} : Bool} 0x4c3090ea8722081700f9d99ea7503e43/logic.bend lt_succ @a:Nat -> {Nat.is_lt(a, 1n+a) == True{} : Bool} 0x4c3090ea8722081700f9d99ea7503e43/logic.bend eq_nat_refl @a:Nat -> {Nat.is_eq(a, a) == True{} : Bool} 0x4c3090ea8722081700f9d99ea7503e43/logic.bend le_total @a:Nat -> @b:Nat -> {Bool.or(Nat.is_le(a, b), Nat.is_le(b, a)) == True{} : Bool} 0x4c3090ea8722081700f9d99ea7503e43/math.bend collatz_27 {collatz(200n, 27) == 111n : Nat} 0x4c3090ea8722081700f9d99ea7503e43/math.bend fib_fast_20 {fib_fast(20) == 6765 : U32} 0x4c3090ea8722081700f9d99ea7503e43/math.bend pow_2_10 {pow_u32(2, 10) == 1024 : U32} 0x4c3090ea8722081700f9d99ea7503e43/math.bend isqrt_16 {isqrt(16) == 4 : U32} 0x4c3090ea8722081700f9d99ea7503e43/math.bend isqrt_0 {isqrt(0) == 0 : U32} 0x4c3090ea8722081700f9d99ea7503e43/math.bend gcd_zero_r @+a:U32 -> {gcd(a, 0) == a : U32} 0x4c3090ea8722081700f9d99ea7503e43/math.bend add_le_mono @+a:Nat -> @+b:Nat -> @+c:Nat -> {Nat.is_le(Nat.add(a, c), Nat.add(b, c)) == Nat.is_le(a, b) : Bool} 0x4c3090ea8722081700f9d99ea7503e43/mathlib.bend mlib_pop_7 {mlib_pop(7) == 3 : U32} 0x4c3090ea8722081700f9d99ea7503e43/mathlib.bend mlib_pow_3_5 {mlib_pow(3, 5) == 243 : U32} 0x4c3090ea8722081700f9d99ea7503e43/mathlib.bend mlib_gcd_12_8 {mlib_gcd(12, 8) == 4 : U32} 0x4c3090ea8722081700f9d99ea7503e43/mathlib.bend mlib_prime_7 {mlib_is_prime(7) == True{} : Bool} 0x4c3090ea8722081700f9d99ea7503e43/mathlib.bend mlib_modpow_345 {mlib_mod_pow(3, 4, 5) == 1 : U32} 0x4c3090ea8722081700f9d99ea7503e43/mathlib.bend mlib_trisum_10 {mlib_trisum_u32(10n) == 55 : U32} 0x4c3090ea8722081700f9d99ea7503e43/mathlib.bend mlib_radd_1_2_1_3_num {mlib_radd_num(0x4c3090ea8722081700f9d99ea7503e43/rat.mk_rat(False{}, 1, 2), 0x4c3090ea8722081700f9d99ea7503e43/rat.mk_rat(False{}, 1, 3)) == 5 : U32} 0x4c3090ea8722081700f9d99ea7503e43/mathlib.bend mlib_mat_det_example {mlib_mat_det_u32(0x4c3090ea8722081700f9d99ea7503e43/mlib_linalg.mmat_example) == 10 : U32} 0x4c3090ea8722081700f9d99ea7503e43/mathlib.bend mlib_set_size_two {mlib_set_size(0x4c3090ea8722081700f9d99ea7503e43/set.sinsert(0x4c3090ea8722081700f9d99ea7503e43/set.sinsert(0x4c3090ea8722081700f9d99ea7503e43/set.sempty, 1), 2)) == 2 : U32} 0x4c3090ea8722081700f9d99ea7503e43/mathlib.bend mlib_selftest_value {mlib_selftest == 324 : U32} 0x4c3090ea8722081700f9d99ea7503e43/mlib_linalg.bend mmat_add_1234_5678 {mmat_add(mmat_mk(1n, 2n, 3n, 4n), mmat_mk(5n, 6n, 7n, 8n)) == mmat_mk(6n, 8n, 10n, 12n) : Mat2} 0x4c3090ea8722081700f9d99ea7503e43/mlib_linalg.bend mmat_mul_12_34 {mmat_mul(mmat_mk(1n, 2n, 3n, 4n), mmat_mk(5n, 6n, 7n, 8n)) == mmat_mk(19n, 22n, 43n, 50n) : Mat2} 0x4c3090ea8722081700f9d99ea7503e43/mlib_linalg.bend mmat_det_example {mmat_det(mmat_example) == 10n : Nat} 0x4c3090ea8722081700f9d99ea7503e43/mlib_linalg.bend mmat_trace_example {mmat_trace(mmat_example) == 7n : Nat} 0x4c3090ea8722081700f9d99ea7503e43/mlib_linalg.bend mmat_id_mul {mmat_mul(mmat_id, mmat_example) == mmat_example : Mat2} 0x4c3090ea8722081700f9d99ea7503e43/mlib_linalg.bend mmat_add_zero {mmat_add(mmat_example, mmat_zero) == mmat_example : Mat2} 0x4c3090ea8722081700f9d99ea7503e43/mlib_linalg.bend mmat_eq_refl {mmat_eq(mmat_example, mmat_example) == True{} : Bool} 0x4c3090ea8722081700f9d99ea7503e43/nat.bend add_zero_r @x:Nat -> {Nat.add(x, 0n) == x : Nat} 0x4c3090ea8722081700f9d99ea7503e43/nat.bend add_succ_r @x:Nat -> @y:Nat -> {Nat.add(x, 1n+y) == 1n+Nat.add(x, y) : Nat} 0x4c3090ea8722081700f9d99ea7503e43/nat.bend add_comm @x:Nat -> @+y:Nat -> {Nat.add(x, y) == Nat.add(y, x) : Nat} 0x4c3090ea8722081700f9d99ea7503e43/nat.bend add_assoc @x:Nat -> @+y:Nat -> @+z:Nat -> {Nat.add(Nat.add(x, y), z) == Nat.add(x, Nat.add(y, z)) : Nat} 0x4c3090ea8722081700f9d99ea7503e43/nat.bend add_shuffle @a:Nat -> @+b:Nat -> @+c:Nat -> @+d:Nat -> {Nat.add(Nat.add(a, b), Nat.add(c, d)) == Nat.add(Nat.add(a, c), Nat.add(b, d)) : Nat} 0x4c3090ea8722081700f9d99ea7503e43/nat.bend mul_add_distr @x:Nat -> @+b:Nat -> @+c:Nat -> {Nat.mul(x, Nat.add(b, c)) == Nat.add(Nat.mul(x, b), Nat.mul(x, c)) : Nat} 0x4c3090ea8722081700f9d99ea7503e43/nat.bend mul_zero_r @x:Nat -> {Nat.mul(x, 0n) == 0n : Nat} 0x4c3090ea8722081700f9d99ea7503e43/nat.bend sub_refl @a:Nat -> {Nat.sub(a, a) == 0n : Nat} 0x4c3090ea8722081700f9d99ea7503e43/nat.bend cmp_refl @a:Nat -> {Nat.cmp(a, a) == EQ{} : Cmp} 0x4c3090ea8722081700f9d99ea7503e43/nat.bend cmp_sym_refl @a:Nat -> {EQ{} == Nat.cmp(a, a) : Cmp} 0x4c3090ea8722081700f9d99ea7503e43/nat.bend mul_one_r @x:Nat -> {Nat.mul(x, 1n) == x : Nat} 0x4c3090ea8722081700f9d99ea7503e43/nat.bend mul_1p_1 @p:Nat -> {Nat.mul(1n+p, 1n) == 1n+p : Nat} 0x4c3090ea8722081700f9d99ea7503e43/nat.bend mul_succ_r @x:Nat -> @+y:Nat -> {Nat.mul(x, 1n+y) == Nat.add(Nat.mul(x, y), x) : Nat} 0x4c3090ea8722081700f9d99ea7503e43/nat.bend mul_comm @x:Nat -> @+y:Nat -> {Nat.mul(x, y) == Nat.mul(y, x) : Nat} 0x4c3090ea8722081700f9d99ea7503e43/nat.bend add_le_mono @+a:Nat -> @+b:Nat -> @+c:Nat -> {Nat.is_le(Nat.add(a, c), Nat.add(b, c)) == Nat.is_le(a, b) : Bool} 0x4c3090ea8722081700f9d99ea7503e43/num.bend catalan_4 {catalan(4) == 14 : U32} 0x4c3090ea8722081700f9d99ea7503e43/num.bend perm_5_2 {perm(5, 2) == 20 : U32} 0x4c3090ea8722081700f9d99ea7503e43/num.bend prime_nth_6 {prime_nth(25n, 6) == 13 : U32} 0x4c3090ea8722081700f9d99ea7503e43/num.bend prime_11 {is_prime(11) == True{} : Bool} 0x4c3090ea8722081700f9d99ea7503e43/num.bend prime_9_false {is_prime(9) == False{} : Bool} 0x4c3090ea8722081700f9d99ea7503e43/rat.bend radd_1_2_1_3 {radd(mk_rat(False{}, 1, 2), mk_rat(False{}, 1, 3)) == mk_rat(False{}, 5, 6) : Rat} 0x4c3090ea8722081700f9d99ea7503e43/rat.bend rmul_2_3_3_4 {rmul(mk_rat(False{}, 2, 3), mk_rat(False{}, 3, 4)) == mk_rat(False{}, 1, 2) : Rat} 0x4c3090ea8722081700f9d99ea7503e43/rat.bend rsub_3_4_1_4 {rsub(mk_rat(False{}, 3, 4), mk_rat(False{}, 1, 4)) == mk_rat(False{}, 1, 2) : Rat} 0x4c3090ea8722081700f9d99ea7503e43/rat.bend req_sym_1_2_1_3 {req(mk_rat(False{}, 1, 2), mk_rat(False{}, 1, 3)) == req(mk_rat(False{}, 1, 3), mk_rat(False{}, 1, 2)) : Bool} 0x4c3090ea8722081700f9d99ea7503e43/rat.bend rdiv_1_2_1_4 {rdiv(mk_rat(False{}, 1, 2), mk_rat(False{}, 1, 4)) == mk_rat(False{}, 2, 1) : Rat} 0x4c3090ea8722081700f9d99ea7503e43/series.bend tri_10 {trisum(10n) == 55n : Nat} 0x4c3090ea8722081700f9d99ea7503e43/series.bend sq_5 {sqsum(5n) == 55n : Nat} 0x4c3090ea8722081700f9d99ea7503e43/series.bend trisum_go_spec @n:Nat -> @+acc:Nat -> {trisum_go(n, acc) == Nat.add(acc, trisum(n)) : Nat} 0x4c3090ea8722081700f9d99ea7503e43/series.bend tri2_succ @+p:Nat -> {tri2(1n+p) == Nat.add(tri2(p), Nat.add(1n+p, 1n+p)) : Nat} 0x4c3090ea8722081700f9d99ea7503e43/series.bend tri_formula @n:Nat -> {Nat.add(trisum(n), trisum(n)) == tri2(n) : Nat} 0x4c3090ea8722081700f9d99ea7503e43/series.bend sqsum_go_spec @n:Nat -> @+acc:Nat -> {sqsum_go(n, acc) == Nat.add(acc, sqsum(n)) : Nat} 0x4c3090ea8722081700f9d99ea7503e43/series.bend sqW_grow @+p:Nat -> {Nat.add(1n+p, Nat.add(1n+p, 1n)) == Nat.add(Nat.add(p, Nat.add(p, 1n)), 2n) : Nat} 0x4c3090ea8722081700f9d99ea7503e43/series.bend sq62_distr @+p:Nat -> {sq62(1n+p) == Nat.add(Nat.mul(tri2(p), Nat.add(1n+p, Nat.add(1n+p, 1n))), Nat.mul(Nat.add(1n+p, 1n+p), Nat.add(1n+p, Nat.add(1n+p, 1n)))) : Nat} 0x4c3090ea8722081700f9d99ea7503e43/set.bend set_mem_hit {smember(sinsert(sempty, 5), 5) == (US{[5]}, True{}) : Pair(USet, Bool)} 0x4c3090ea8722081700f9d99ea7503e43/set.bend set_size_two {ssize(sinsert(sinsert(sempty, 1), 2)) == 2 : U32} 0x4c3090ea8722081700f9d99ea7503e43/set.bend set_size_dedup {ssize(sinsert(sinsert(sempty, 1), 1)) == 1 : U32} 0x4c3090ea8722081700f9d99ea7503e43/set.bend ssize_empty {ssize(sempty) == 0 : U32} 0x53dde92df75268075f1bc6c33ecbb079/LAWS.bend prediction_count @+model:0x53dde92df75268075f1bc6c33ecbb079/src/linear_regression.Model -> @+rows:0x53dde92df75268075f1bc6c33ecbb079/src/batch.Batch -> {0x53dde92df75268075f1bc6c33ecbb079/src/batch.count(F32, 0x53dde92df75268075f1bc6c33ecbb079/src/linear_regression.predict_batch(model, rows)) == 0x53dde92df75268075f1bc6c33ecbb079/src/batch.count(F32, rows) : Nat} 0x53dde92df75268075f1bc6c33ecbb079/LAWS.bend rejects_empty_training {0x53dde92df75268075f1bc6c33ecbb079/src/linear_regression.fit(0x53dde92df75268075f1bc6c33ecbb079/src/batch.Empty{}) == Fail{0x53dde92df75268075f1bc6c33ecbb079/src/linear_regression.NotEnoughSamples{}} : Result<&2, &2, 0x53dde92df75268075f1bc6c33ecbb079/src/linear_regression.FitError, 0x53dde92df75268075f1bc6c33ecbb079/src/linear_regression.Model>} 0x5f97f469d15c04a181dae0e4e64e1d3d/src/list.bend append_nil @-A:Data -> @xs:List<&2, A> -> {xs == List.append(&2, A, xs, []) : List<&2, A>} 0x5f97f469d15c04a181dae0e4e64e1d3d/src/list.bend append_assoc @-A:Data -> @a:List<&2, A> -> @-b:List<&2, A> -> @-c:List<&2, A> -> {List.append(&2, A, a, List.append(&2, A, b, c)) == List.append(&2, A, List.append(&2, A, a, b), c) : List<&2, A>} 0x5f97f469d15c04a181dae0e4e64e1d3d/src/list.bend reverse_go @-A:Data -> @+xs:List<&2, A> -> @+acc:List<&2, A> -> {List.append(&2, A, List.reverse(&2, A, xs), acc) == List.reverse.go(&2, A, xs, acc) : List<&2, A>} 0x5f97f469d15c04a181dae0e4e64e1d3d/src/machine.bend run_inv @-S:Data -> @-I:Data -> @-step:(@_:S -> @_:I -> S) -> @-Inv:(@_:S -> Type) -> @-keep:(@s:S -> @i:I -> @_:Inv(s) -> Inv(step(s, i))) -> @xs:List<&2, I> -> @+s:S -> @_:Inv(s) -> Inv(run(S, I, step, s, xs)) 0x5f97f469d15c04a181dae0e4e64e1d3d/src/nat.bend add_assoc @a:Nat -> @b:Nat -> @c:Nat -> {Nat.add(a, Nat.add(b, c)) == Nat.add(Nat.add(a, b), c) : Nat} 0x5f97f469d15c04a181dae0e4e64e1d3d/src/nat.bend le_refl @a:Nat -> LE(a, a) 0x5f97f469d15c04a181dae0e4e64e1d3d/src/nat.bend le_step @a:Nat -> LE(a, 1n+a) 0x5f97f469d15c04a181dae0e4e64e1d3d/src/nat.bend le_trans @a:Nat -> @b:Nat -> @c:Nat -> @ab:LE(a, b) -> @bc:LE(b, c) -> LE(a, c) 0x5f97f469d15c04a181dae0e4e64e1d3d/src/nat.bend sub_le @a:Nat -> @k:Nat -> LE(Nat.sub(a, k), a) 0x5f97f469d15c04a181dae0e4e64e1d3d/src/nat.bend IsFalse @c:Bool -> Type 0x5f97f469d15c04a181dae0e4e64e1d3d/src/nat.bend IsTrue @c:Bool -> Type 0x5f97f469d15c04a181dae0e4e64e1d3d/src/nat.bend le_of_is_lt @a:Nat -> @b:Nat -> @e:{Nat.is_lt(a, b) == True{} : Bool} -> LE(a, b) 0x5f97f469d15c04a181dae0e4e64e1d3d/src/nat.bend ge_of_not_lt @a:Nat -> @b:Nat -> @e:{Nat.is_lt(a, b) == False{} : Bool} -> LE(b, a) 0x5f97f469d15c04a181dae0e4e64e1d3d/src/queue.bend push_model @-A:Data -> @q:Queue -> @+x:A -> {List.append(&2, A, model(A, q), [x]) == model(A, push(A, q, x)) : List<&2, A>} 0x5f97f469d15c04a181dae0e4e64e1d3d/src/queue.bend pop_model.rot @-A:Data -> @f:List<&2, A> -> {0x5f97f469d15c04a181dae0e4e64e1d3d/src/list.uncons(A, f) == pop.model(A, pop.rot(A, f)) : 0x5f97f469d15c04a181dae0e4e64e1d3d/src/list.Step<&2, A, List<&2, A>>} 0x5f97f469d15c04a181dae0e4e64e1d3d/src/queue.bend pop_model @-A:Data -> @q:Queue -> {0x5f97f469d15c04a181dae0e4e64e1d3d/src/list.uncons(A, model(A, q)) == pop.model(A, pop(A, q)) : 0x5f97f469d15c04a181dae0e4e64e1d3d/src/list.Step<&2, A, List<&2, A>>} 0x5f97f469d15c04a181dae0e4e64e1d3d/src/sim.bend back_step @-P:Data -> @-g:0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.Group

-> @-F:(@_:P -> P) -> @s:State

-> {s == back(P, g, F, step(P, g, F, s)) : State

} 0x5f97f469d15c04a181dae0e4e64e1d3d/src/sim.bend run_step @-P:Data -> @-g:0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.Group

-> @-F:(@_:P -> P) -> @k:Nat -> @s:State

-> {step(P, g, F, run(P, g, F, k, s)) == run(P, g, F, k, step(P, g, F, s)) : State

} 0x5f97f469d15c04a181dae0e4e64e1d3d/src/sim.bend rewind_run @-P:Data -> @-g:0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.Group

-> @-F:(@_:P -> P) -> @+n:Nat -> @+s:State

-> {s == rewind(P, g, F, n, run(P, g, F, n, s)) : State

} 0x5f97f469d15c04a181dae0e4e64e1d3d/src/sorted.bend insert_from.go @-A:Data -> @-o:0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.Ord -> @-lo:A -> @-x:A -> @-h:A -> @-t:List<&2, A> -> @-rec:(@_:Unit -> List<&2, A>) -> @s:from(A, o, lo, h <> t) -> @lx:0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.Ord.R(A, o, lo, x) -> @ih:(@_:from(A, o, h, t) -> @_:0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.Ord.R(A, o, h, x) -> from(A, o, h, rec(Unit{}))) -> @c:Or(0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.Ord.R(A, o, x, h), 0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.Ord.R(A, o, h, x)) -> from(A, o, lo, insert.go(A, o, x, h, t, rec, c)) 0x5f97f469d15c04a181dae0e4e64e1d3d/src/sorted.bend insert_from @-A:Data -> @-o:0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.Ord -> @+x:A -> @xs:List<&2, A> -> @-lo:A -> @_:from(A, o, lo, xs) -> @_:0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.Ord.R(A, o, lo, x) -> from(A, o, lo, insert(A, o, x, xs)) 0x5f97f469d15c04a181dae0e4e64e1d3d/src/sorted.bend insert_sorted.go @-A:Data -> @-o:0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.Ord -> @-x:A -> @-h:A -> @-t:List<&2, A> -> @-rec:(@_:Unit -> List<&2, A>) -> @s:from(A, o, h, t) -> @ih:(@_:from(A, o, h, t) -> @_:0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.Ord.R(A, o, h, x) -> from(A, o, h, rec(Unit{}))) -> @c:Or(0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.Ord.R(A, o, x, h), 0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.Ord.R(A, o, h, x)) -> Sorted(A, o, insert.go(A, o, x, h, t, rec, c)) 0x5f97f469d15c04a181dae0e4e64e1d3d/src/sorted.bend insert_sorted @-A:Data -> @-o:0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.Ord -> @+x:A -> @xs:List<&2, A> -> @_:Sorted(A, o, xs) -> Sorted(A, o, insert(A, o, x, xs)) 0x5f97f469d15c04a181dae0e4e64e1d3d/src/sorted.bend sort_sorted @-A:Data -> @-o:0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.Ord -> @xs:List<&2, A> -> Sorted(A, o, sort(A, o, xs)) 0x5f97f469d15c04a181dae0e4e64e1d3d/src/sorted.bend bump_swap @a:Bool -> @b:Bool -> @-n:Nat -> {bump(a, bump(b, n)) == bump(b, bump(a, n)) : Nat} 0x5f97f469d15c04a181dae0e4e64e1d3d/src/sorted.bend insert_count.go @-A:Data -> @-eq:(@_:A -> @_:A -> Bool) -> @-o:0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.Ord -> @+y:A -> @+x:A -> @+h:A -> @+t:List<&2, A> -> @-rec:(@_:Unit -> List<&2, A>) -> @ih:{bump(eq(y, x), count(A, eq, y, t)) == count(A, eq, y, rec(Unit{})) : Nat} -> @c:Or(0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.Ord.R(A, o, x, h), 0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.Ord.R(A, o, h, x)) -> {bump(eq(y, x), count(A, eq, y, h <> t)) == count(A, eq, y, insert.go(A, o, x, h, t, rec, c)) : Nat} 0x5f97f469d15c04a181dae0e4e64e1d3d/src/sorted.bend insert_count @-A:Data -> @-o:0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.Ord -> @-eq:(@_:A -> @_:A -> Bool) -> @+y:A -> @+x:A -> @xs:List<&2, A> -> {bump(eq(y, x), count(A, eq, y, xs)) == count(A, eq, y, insert(A, o, x, xs)) : Nat} 0x5f97f469d15c04a181dae0e4e64e1d3d/src/sorted.bend sort_count @-A:Data -> @-o:0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.Ord -> @-eq:(@_:A -> @_:A -> Bool) -> @+y:A -> @xs:List<&2, A> -> {count(A, eq, y, xs) == count(A, eq, y, sort(A, o, xs)) : Nat} 0x5f97f469d15c04a181dae0e4e64e1d3d/src/tree.bend reduce_foldr @-A:Data -> @-m:0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.Semigroup -> @t:Tree -> @+acc:List<&2, A> -> @+z:A -> {0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.Semigroup.op(A, m, reduce(A, m, t), List.foldr(&2, A, A, 0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.Semigroup.fn(A, m), acc, z)) == List.foldr(&2, A, A, 0x5f97f469d15c04a181dae0e4e64e1d3d/src/class.Semigroup.fn(A, m), to_list.go(A, t, acc), z) : A} 0x600981079d65a285d008308db02b846c/src/CONTRACTS_PROOF.bend protected_denies @-S:Data -> @-B:Data -> @+state:S -> @next:(@_:S -> 0x600981079d65a285d008308db02b846c/src/contracts.Decision) -> {0x600981079d65a285d008308db02b846c/src/contracts.authorize(S, B, True{}, False{}, state, next) == 0x600981079d65a285d008308db02b846c/src/contracts.Decision{state, 0x600981079d65a285d008308db02b846c/src/contracts.Error{401n, "unauthorized", []}} : 0x600981079d65a285d008308db02b846c/src/contracts.Decision} 0x600981079d65a285d008308db02b846c/src/CONTRACTS_PROOF.bend read_preserves @-S:Data -> @-B:Data -> @+state:S -> @proposed:0x600981079d65a285d008308db02b846c/src/contracts.Decision -> {0x600981079d65a285d008308db02b846c/src/contracts.state(S, B, 0x600981079d65a285d008308db02b846c/src/contracts.preserve(S, B, True{}, state, proposed)) == state : S} 0x600981079d65a285d008308db02b846c/src/CONTRACTS_PROOF.bend dispatch_read_preserves @-S:Data -> @-B:Data -> @selection:0x600981079d65a285d008308db02b846c/src/contracts.Selection -> @valid:Bool -> @+state:S -> @next:(@_:0x600981079d65a285d008308db02b846c/src/contracts.Route -> @_:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Param> -> @_:S -> 0x600981079d65a285d008308db02b846c/src/contracts.Decision) -> {0x600981079d65a285d008308db02b846c/src/contracts.state(S, B, 0x600981079d65a285d008308db02b846c/src/contracts.run(S, B, selection, True{}, valid, state, next)) == state : S} 0x600981079d65a285d008308db02b846c/src/CONTRACTS_PROOF.bend get_is_read {0x600981079d65a285d008308db02b846c/src/contracts.readonly("GET") == True{} : Bool} 0x600981079d65a285d008308db02b846c/src/CONTRACTS_PROOF.bend head_is_read {0x600981079d65a285d008308db02b846c/src/contracts.readonly("HEAD") == True{} : Bool} 0x600981079d65a285d008308db02b846c/src/CONTRACTS_PROOF.bend unknown_is_404 @-S:Data -> @-B:Data -> @read:Bool -> @valid:Bool -> @+state:S -> @next:(@_:0x600981079d65a285d008308db02b846c/src/contracts.Route -> @_:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Param> -> @_:S -> 0x600981079d65a285d008308db02b846c/src/contracts.Decision) -> {0x600981079d65a285d008308db02b846c/src/contracts.run(S, B, 0x600981079d65a285d008308db02b846c/src/contracts.Missing{}, read, valid, state, next) == 0x600981079d65a285d008308db02b846c/src/contracts.Decision{state, 0x600981079d65a285d008308db02b846c/src/contracts.Error{404n, "not_found", []}} : 0x600981079d65a285d008308db02b846c/src/contracts.Decision} 0x600981079d65a285d008308db02b846c/src/CONTRACTS_PROOF.bend wrong_method_is_405 @-S:Data -> @-B:Data -> @+methods:List<&2, String> -> @read:Bool -> @valid:Bool -> @+state:S -> @next:(@_:0x600981079d65a285d008308db02b846c/src/contracts.Route -> @_:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Param> -> @_:S -> 0x600981079d65a285d008308db02b846c/src/contracts.Decision) -> {0x600981079d65a285d008308db02b846c/src/contracts.run(S, B, 0x600981079d65a285d008308db02b846c/src/contracts.WrongMethod{methods}, read, valid, state, next) == 0x600981079d65a285d008308db02b846c/src/contracts.Decision{state, 0x600981079d65a285d008308db02b846c/src/contracts.Error{405n, "method_not_allowed", methods}} : 0x600981079d65a285d008308db02b846c/src/contracts.Decision} 0x600981079d65a285d008308db02b846c/src/CONTRACTS_PROOF.bend protected_route_denies @-S:Data -> @-B:Data -> @id:Nat -> @method:String -> @pattern:String -> @statuses:List<&2, Nat> -> @params:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Param> -> @read:Bool -> @+state:S -> @next:(@_:0x600981079d65a285d008308db02b846c/src/contracts.Route -> @_:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Param> -> @_:S -> 0x600981079d65a285d008308db02b846c/src/contracts.Decision) -> {0x600981079d65a285d008308db02b846c/src/contracts.run(S, B, 0x600981079d65a285d008308db02b846c/src/contracts.Found{0x600981079d65a285d008308db02b846c/src/contracts.Route{id, method, pattern, True{}, statuses}, params}, read, False{}, state, next) == 0x600981079d65a285d008308db02b846c/src/contracts.Decision{state, 0x600981079d65a285d008308db02b846c/src/contracts.Error{401n, "unauthorized", []}} : 0x600981079d65a285d008308db02b846c/src/contracts.Decision} 0x600981079d65a285d008308db02b846c/src/LAWS.bend timeout_is_explicit @+ms:U32 -> @+request:0x600981079d65a285d008308db02b846c/src/http.Request -> {0x600981079d65a285d008308db02b846c/src/http.timeout(0x600981079d65a285d008308db02b846c/src/http.with_timeout(ms, request)) == ms : U32} 0x600981079d65a285d008308db02b846c/src/LAWS.bend body_limit_is_explicit @+bytes:U32 -> @+request:0x600981079d65a285d008308db02b846c/src/http.Request -> {0x600981079d65a285d008308db02b846c/src/http.body_limit(0x600981079d65a285d008308db02b846c/src/http.with_max_bytes(bytes, request)) == bytes : U32} 0x600981079d65a285d008308db02b846c/src/LAWS.bend setting_timeout_preserves_body_limit @+ms:U32 -> @+request:0x600981079d65a285d008308db02b846c/src/http.Request -> {0x600981079d65a285d008308db02b846c/src/http.body_limit(0x600981079d65a285d008308db02b846c/src/http.with_timeout(ms, request)) == 0x600981079d65a285d008308db02b846c/src/http.body_limit(request) : U32} 0x600981079d65a285d008308db02b846c/src/LAWS.bend setting_header_preserves_timeout @+name:String -> @+value:String -> @+request:0x600981079d65a285d008308db02b846c/src/http.Request -> {0x600981079d65a285d008308db02b846c/src/http.timeout(0x600981079d65a285d008308db02b846c/src/http.with_header(name, value, request)) == 0x600981079d65a285d008308db02b846c/src/http.timeout(request) : U32} 0x600981079d65a285d008308db02b846c/src/LAWS.bend setting_header_preserves_body_limit @+name:String -> @+value:String -> @+request:0x600981079d65a285d008308db02b846c/src/http.Request -> {0x600981079d65a285d008308db02b846c/src/http.body_limit(0x600981079d65a285d008308db02b846c/src/http.with_header(name, value, request)) == 0x600981079d65a285d008308db02b846c/src/http.body_limit(request) : U32} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend nonempty_matches @+name:String -> @+value:String -> {Bool.and(Bool.not(String.is_empty(name)), Bool.not(String.is_empty(value))) == 0x600981079d65a285d008308db02b846c/src/routing_spec.nonempty(name, value) : Bool} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend literal_matches @+same:Bool -> @+rest:0x600981079d65a285d008308db02b846c/src/contracts.Match -> {0x600981079d65a285d008308db02b846c/src/contracts.literal(same, u => rest) == 0x600981079d65a285d008308db02b846c/src/routing_spec.combine(0x600981079d65a285d008308db02b846c/src/routing_spec.exact(same), rest) : 0x600981079d65a285d008308db02b846c/src/contracts.Match} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend parameter_matches @+ok:Bool -> @+name:String -> @+value:String -> @+rest:0x600981079d65a285d008308db02b846c/src/contracts.Match -> {0x600981079d65a285d008308db02b846c/src/contracts.literal(ok, u => 0x600981079d65a285d008308db02b846c/src/contracts.prepend(name, value, rest)) == 0x600981079d65a285d008308db02b846c/src/routing_spec.combine(0x600981079d65a285d008308db02b846c/src/routing_spec.parameter(ok, name, value), rest) : 0x600981079d65a285d008308db02b846c/src/contracts.Match} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend capture_matches @+parameter:Bool -> @+head:Char -> @+name:String -> @+value:String -> @+rest:0x600981079d65a285d008308db02b846c/src/contracts.Match -> {0x600981079d65a285d008308db02b846c/src/contracts.capture(parameter, SCon{head, name}, name, value, u => rest) == 0x600981079d65a285d008308db02b846c/src/routing_spec.combine(0x600981079d65a285d008308db02b846c/src/routing_spec.part_kind(parameter, head, name, value), rest) : 0x600981079d65a285d008308db02b846c/src/contracts.Match} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend segment_matches @+pattern:String -> @+value:String -> @+rest:0x600981079d65a285d008308db02b846c/src/contracts.Match -> {0x600981079d65a285d008308db02b846c/src/contracts.segment(pattern, value, u => rest) == 0x600981079d65a285d008308db02b846c/src/routing_spec.combine(0x600981079d65a285d008308db02b846c/src/routing_spec.part(pattern, value), rest) : 0x600981079d65a285d008308db02b846c/src/contracts.Match} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend values_match_spec @+patterns:List<&2, String> -> @+path:List<&2, String> -> {0x600981079d65a285d008308db02b846c/src/contracts.values(patterns, path) == 0x600981079d65a285d008308db02b846c/src/routing_spec.segments(patterns, path) : 0x600981079d65a285d008308db02b846c/src/contracts.Match} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend match_path_matches_spec @+pattern:String -> @+path:String -> {0x600981079d65a285d008308db02b846c/src/contracts.match_path(pattern, path) == 0x600981079d65a285d008308db02b846c/src/routing_spec.path(pattern, path) : 0x600981079d65a285d008308db02b846c/src/contracts.Match} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend membership_matches @+verb:String -> @+methods:List<&2, String> -> {0x600981079d65a285d008308db02b846c/src/contracts.has_method(verb, methods) == 0x600981079d65a285d008308db02b846c/src/routing_spec.member(verb, methods) : Bool} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend unique_matches @+duplicate:Bool -> @+verb:String -> @+methods:List<&2, String> -> {0x600981079d65a285d008308db02b846c/src/contracts.unique(duplicate, verb, methods) == 0x600981079d65a285d008308db02b846c/src/routing_spec.retain(duplicate, verb, methods) : List<&2, String>} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend allowed_matches @+verb:String -> @+suffix:0x600981079d65a285d008308db02b846c/src/contracts.Selection -> {0x600981079d65a285d008308db02b846c/src/contracts.add_allowed(verb, suffix) == fallback(verb, suffix) : 0x600981079d65a285d008308db02b846c/src/contracts.Selection} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend chosen_matches @+same:Bool -> @+route:0x600981079d65a285d008308db02b846c/src/contracts.Route -> @+params:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Param> -> @+suffix:0x600981079d65a285d008308db02b846c/src/contracts.Selection -> {0x600981079d65a285d008308db02b846c/src/contracts.chosen(same, route, params, suffix) == choose(same, route, params, suffix) : 0x600981079d65a285d008308db02b846c/src/contracts.Selection} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend selection_step @+result:0x600981079d65a285d008308db02b846c/src/contracts.Match -> @+id:Nat -> @+verb:String -> @+pattern:String -> @+protected:Bool -> @+statuses:List<&2, Nat> -> @+method:String -> @+tail:List<&2, 0x600981079d65a285d008308db02b846c/src/routing_spec.Hit> -> {0x600981079d65a285d008308db02b846c/src/contracts.matched(result, String.eq(verb, method), 0x600981079d65a285d008308db02b846c/src/contracts.Route{id, verb, pattern, protected, statuses}, resolve(tail, method)) == resolve(0x600981079d65a285d008308db02b846c/src/routing_spec.include(result, 0x600981079d65a285d008308db02b846c/src/contracts.Route{id, verb, pattern, protected, statuses}, tail), method) : 0x600981079d65a285d008308db02b846c/src/contracts.Selection} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend select_matches_fold @+routes:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Route> -> @+method:String -> @+path:String -> {0x600981079d65a285d008308db02b846c/src/contracts.select(routes, method, path) == fold_select(routes, method, path) : 0x600981079d65a285d008308db02b846c/src/contracts.Selection} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend fallback_nonempty @+duplicate:Bool -> @+verb:String -> @+m:String -> @+ms:List<&2, String> -> {0x600981079d65a285d008308db02b846c/src/contracts.WrongMethod{0x600981079d65a285d008308db02b846c/src/routing_spec.retain(duplicate, verb, m <> ms)} == 0x600981079d65a285d008308db02b846c/src/routing_spec.summary(0x600981079d65a285d008308db02b846c/src/routing_spec.Absent{}, 0x600981079d65a285d008308db02b846c/src/routing_spec.retain(duplicate, verb, m <> ms)) : 0x600981079d65a285d008308db02b846c/src/contracts.Selection} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend fallback_summary @+verb:String -> @+first:0x600981079d65a285d008308db02b846c/src/routing_spec.First -> @+methods:List<&2, String> -> {fallback(verb, 0x600981079d65a285d008308db02b846c/src/routing_spec.summary(first, methods)) == 0x600981079d65a285d008308db02b846c/src/routing_spec.summary(first, 0x600981079d65a285d008308db02b846c/src/routing_spec.dedup_head(verb, methods)) : 0x600981079d65a285d008308db02b846c/src/contracts.Selection} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend choose_summary @+same:Bool -> @+route:0x600981079d65a285d008308db02b846c/src/contracts.Route -> @+params:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Param> -> @+first:0x600981079d65a285d008308db02b846c/src/routing_spec.First -> @+methods:List<&2, String> -> {choose(same, route, params, 0x600981079d65a285d008308db02b846c/src/routing_spec.summary(first, methods)) == 0x600981079d65a285d008308db02b846c/src/routing_spec.summary(0x600981079d65a285d008308db02b846c/src/routing_spec.first_step(same, 0x600981079d65a285d008308db02b846c/src/routing_spec.Hit{route, params}, first), 0x600981079d65a285d008308db02b846c/src/routing_spec.dedup_head(0x600981079d65a285d008308db02b846c/src/routing_spec.verb(route), methods)) : 0x600981079d65a285d008308db02b846c/src/contracts.Selection} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend resolve_matches_summary @+hits:List<&2, 0x600981079d65a285d008308db02b846c/src/routing_spec.Hit> -> @+method:String -> {resolve(hits, method) == 0x600981079d65a285d008308db02b846c/src/routing_spec.summary(0x600981079d65a285d008308db02b846c/src/routing_spec.first(hits, method), 0x600981079d65a285d008308db02b846c/src/routing_spec.allowed(hits)) : 0x600981079d65a285d008308db02b846c/src/contracts.Selection} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend select_matches_spec @+routes:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Route> -> @+method:String -> @+path:String -> {0x600981079d65a285d008308db02b846c/src/contracts.select(routes, method, path) == 0x600981079d65a285d008308db02b846c/src/routing_spec.select(routes, method, path) : 0x600981079d65a285d008308db02b846c/src/contracts.Selection} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend selected_first @+routes:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Route> -> @+method:String -> @+path:String -> @+route:0x600981079d65a285d008308db02b846c/src/contracts.Route -> @+params:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Param> -> @first:{0x600981079d65a285d008308db02b846c/src/routing_spec.first(0x600981079d65a285d008308db02b846c/src/routing_spec.hits(routes, path), method) == 0x600981079d65a285d008308db02b846c/src/routing_spec.Present{0x600981079d65a285d008308db02b846c/src/routing_spec.Hit{route, params}} : 0x600981079d65a285d008308db02b846c/src/routing_spec.First} -> {0x600981079d65a285d008308db02b846c/src/contracts.select(routes, method, path) == 0x600981079d65a285d008308db02b846c/src/contracts.Found{route, params} : 0x600981079d65a285d008308db02b846c/src/contracts.Selection} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend missing_no_hits @+routes:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Route> -> @+method:String -> @+path:String -> @unknown:{0x600981079d65a285d008308db02b846c/src/routing_spec.hits(routes, path) == [] : List<&2, 0x600981079d65a285d008308db02b846c/src/routing_spec.Hit>} -> {0x600981079d65a285d008308db02b846c/src/contracts.select(routes, method, path) == 0x600981079d65a285d008308db02b846c/src/contracts.Missing{} : 0x600981079d65a285d008308db02b846c/src/contracts.Selection} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend known_methods @+verb:String -> @+methods:List<&2, String> -> {0x600981079d65a285d008308db02b846c/src/routing_spec.summary(0x600981079d65a285d008308db02b846c/src/routing_spec.Absent{}, 0x600981079d65a285d008308db02b846c/src/routing_spec.dedup_head(verb, methods)) == 0x600981079d65a285d008308db02b846c/src/contracts.WrongMethod{0x600981079d65a285d008308db02b846c/src/routing_spec.dedup_head(verb, methods)} : 0x600981079d65a285d008308db02b846c/src/contracts.Selection} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend known_summary @+route:0x600981079d65a285d008308db02b846c/src/contracts.Route -> @+params:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Param> -> @+tail:List<&2, 0x600981079d65a285d008308db02b846c/src/routing_spec.Hit> -> {0x600981079d65a285d008308db02b846c/src/routing_spec.summary(0x600981079d65a285d008308db02b846c/src/routing_spec.Absent{}, 0x600981079d65a285d008308db02b846c/src/routing_spec.allowed(0x600981079d65a285d008308db02b846c/src/routing_spec.Hit{route, params} <> tail)) == 0x600981079d65a285d008308db02b846c/src/contracts.WrongMethod{0x600981079d65a285d008308db02b846c/src/routing_spec.allowed(0x600981079d65a285d008308db02b846c/src/routing_spec.Hit{route, params} <> tail)} : 0x600981079d65a285d008308db02b846c/src/contracts.Selection} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend wrong_method_exact_allow @+routes:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Route> -> @+method:String -> @+path:String -> @+route:0x600981079d65a285d008308db02b846c/src/contracts.Route -> @+params:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Param> -> @+tail:List<&2, 0x600981079d65a285d008308db02b846c/src/routing_spec.Hit> -> @known:{0x600981079d65a285d008308db02b846c/src/routing_spec.hits(routes, path) == 0x600981079d65a285d008308db02b846c/src/routing_spec.Hit{route, params} <> tail : List<&2, 0x600981079d65a285d008308db02b846c/src/routing_spec.Hit>} -> @wrong:{0x600981079d65a285d008308db02b846c/src/routing_spec.first(0x600981079d65a285d008308db02b846c/src/routing_spec.Hit{route, params} <> tail, method) == 0x600981079d65a285d008308db02b846c/src/routing_spec.Absent{} : 0x600981079d65a285d008308db02b846c/src/routing_spec.First} -> {0x600981079d65a285d008308db02b846c/src/contracts.select(routes, method, path) == 0x600981079d65a285d008308db02b846c/src/contracts.WrongMethod{0x600981079d65a285d008308db02b846c/src/routing_spec.allowed(0x600981079d65a285d008308db02b846c/src/routing_spec.Hit{route, params} <> tail)} : 0x600981079d65a285d008308db02b846c/src/contracts.Selection} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend dispatch_unknown @-State:Data -> @-Body:Data -> @+routes:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Route> -> @+method:String -> @+path:String -> @valid:Bool -> @+state:State -> @next:(@_:0x600981079d65a285d008308db02b846c/src/contracts.Route -> @_:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Param> -> @_:State -> 0x600981079d65a285d008308db02b846c/src/contracts.Decision) -> @unknown:{0x600981079d65a285d008308db02b846c/src/routing_spec.hits(routes, path) == [] : List<&2, 0x600981079d65a285d008308db02b846c/src/routing_spec.Hit>} -> {0x600981079d65a285d008308db02b846c/src/contracts.dispatch(State, Body, routes, method, path, valid, state, next) == 0x600981079d65a285d008308db02b846c/src/contracts.Decision{state, 0x600981079d65a285d008308db02b846c/src/contracts.Error{404n, "not_found", []}} : 0x600981079d65a285d008308db02b846c/src/contracts.Decision} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend dispatch_wrong_method @-State:Data -> @-Body:Data -> @+routes:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Route> -> @+method:String -> @+path:String -> @+route:0x600981079d65a285d008308db02b846c/src/contracts.Route -> @+params:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Param> -> @+tail:List<&2, 0x600981079d65a285d008308db02b846c/src/routing_spec.Hit> -> @valid:Bool -> @+state:State -> @next:(@_:0x600981079d65a285d008308db02b846c/src/contracts.Route -> @_:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Param> -> @_:State -> 0x600981079d65a285d008308db02b846c/src/contracts.Decision) -> @known:{0x600981079d65a285d008308db02b846c/src/routing_spec.hits(routes, path) == 0x600981079d65a285d008308db02b846c/src/routing_spec.Hit{route, params} <> tail : List<&2, 0x600981079d65a285d008308db02b846c/src/routing_spec.Hit>} -> @wrong:{0x600981079d65a285d008308db02b846c/src/routing_spec.first(0x600981079d65a285d008308db02b846c/src/routing_spec.Hit{route, params} <> tail, method) == 0x600981079d65a285d008308db02b846c/src/routing_spec.Absent{} : 0x600981079d65a285d008308db02b846c/src/routing_spec.First} -> {0x600981079d65a285d008308db02b846c/src/contracts.dispatch(State, Body, routes, method, path, valid, state, next) == 0x600981079d65a285d008308db02b846c/src/contracts.Decision{state, 0x600981079d65a285d008308db02b846c/src/contracts.Error{405n, "method_not_allowed", 0x600981079d65a285d008308db02b846c/src/routing_spec.allowed(0x600981079d65a285d008308db02b846c/src/routing_spec.Hit{route, params} <> tail)}} : 0x600981079d65a285d008308db02b846c/src/contracts.Decision} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend dispatch_protected @-State:Data -> @-Body:Data -> @+routes:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Route> -> @+method:String -> @+path:String -> @+id:Nat -> @+verb:String -> @+pattern:String -> @+statuses:List<&2, Nat> -> @+params:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Param> -> @+state:State -> @next:(@_:0x600981079d65a285d008308db02b846c/src/contracts.Route -> @_:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Param> -> @_:State -> 0x600981079d65a285d008308db02b846c/src/contracts.Decision) -> @first:{0x600981079d65a285d008308db02b846c/src/routing_spec.first(0x600981079d65a285d008308db02b846c/src/routing_spec.hits(routes, path), method) == 0x600981079d65a285d008308db02b846c/src/routing_spec.Present{0x600981079d65a285d008308db02b846c/src/routing_spec.Hit{0x600981079d65a285d008308db02b846c/src/contracts.Route{id, verb, pattern, True{}, statuses}, params}} : 0x600981079d65a285d008308db02b846c/src/routing_spec.First} -> {0x600981079d65a285d008308db02b846c/src/contracts.dispatch(State, Body, routes, method, path, False{}, state, next) == 0x600981079d65a285d008308db02b846c/src/contracts.Decision{state, 0x600981079d65a285d008308db02b846c/src/contracts.Error{401n, "unauthorized", []}} : 0x600981079d65a285d008308db02b846c/src/contracts.Decision} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend fallback_never_missing @+verb:String -> @suffix:0x600981079d65a285d008308db02b846c/src/contracts.Selection -> {0x600981079d65a285d008308db02b846c/src/routing_spec.missing(fallback(verb, suffix)) == False{} : Bool} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend choose_never_missing @same:Bool -> @+route:0x600981079d65a285d008308db02b846c/src/contracts.Route -> @params:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Param> -> @suffix:0x600981079d65a285d008308db02b846c/src/contracts.Selection -> {0x600981079d65a285d008308db02b846c/src/routing_spec.missing(choose(same, route, params, suffix)) == False{} : Bool} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend resolve_missing_iff @+hits:List<&2, 0x600981079d65a285d008308db02b846c/src/routing_spec.Hit> -> @+method:String -> {0x600981079d65a285d008308db02b846c/src/routing_spec.missing(resolve(hits, method)) == 0x600981079d65a285d008308db02b846c/src/routing_spec.empty(hits) : Bool} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend missing_iff_no_path @+routes:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Route> -> @+method:String -> @+path:String -> {0x600981079d65a285d008308db02b846c/src/routing_spec.missing(0x600981079d65a285d008308db02b846c/src/contracts.select(routes, method, path)) == 0x600981079d65a285d008308db02b846c/src/routing_spec.empty(0x600981079d65a285d008308db02b846c/src/routing_spec.hits(routes, path)) : Bool} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend fallback_wrong_summary @+verb:String -> @+first:0x600981079d65a285d008308db02b846c/src/routing_spec.First -> @methods:List<&2, String> -> {0x600981079d65a285d008308db02b846c/src/routing_spec.wrong(fallback(verb, 0x600981079d65a285d008308db02b846c/src/routing_spec.summary(first, methods))) == 0x600981079d65a285d008308db02b846c/src/routing_spec.absent(first) : Bool} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend choose_wrong_summary @same:Bool -> @+route:0x600981079d65a285d008308db02b846c/src/contracts.Route -> @+params:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Param> -> @+first:0x600981079d65a285d008308db02b846c/src/routing_spec.First -> @methods:List<&2, String> -> {0x600981079d65a285d008308db02b846c/src/routing_spec.wrong(choose(same, route, params, 0x600981079d65a285d008308db02b846c/src/routing_spec.summary(first, methods))) == 0x600981079d65a285d008308db02b846c/src/routing_spec.absent(0x600981079d65a285d008308db02b846c/src/routing_spec.first_step(same, 0x600981079d65a285d008308db02b846c/src/routing_spec.Hit{route, params}, first)) : Bool} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend resolve_wrong_iff @+hits:List<&2, 0x600981079d65a285d008308db02b846c/src/routing_spec.Hit> -> @+method:String -> {0x600981079d65a285d008308db02b846c/src/routing_spec.wrong(resolve(hits, method)) == Bool.and(Bool.not(0x600981079d65a285d008308db02b846c/src/routing_spec.empty(hits)), 0x600981079d65a285d008308db02b846c/src/routing_spec.absent(0x600981079d65a285d008308db02b846c/src/routing_spec.first(hits, method))) : Bool} 0x600981079d65a285d008308db02b846c/src/ROUTING_PROOF.bend wrong_method_iff @+routes:List<&2, 0x600981079d65a285d008308db02b846c/src/contracts.Route> -> @+method:String -> @+path:String -> {0x600981079d65a285d008308db02b846c/src/routing_spec.wrong(0x600981079d65a285d008308db02b846c/src/contracts.select(routes, method, path)) == Bool.and(Bool.not(0x600981079d65a285d008308db02b846c/src/routing_spec.empty(0x600981079d65a285d008308db02b846c/src/routing_spec.hits(routes, path))), 0x600981079d65a285d008308db02b846c/src/routing_spec.absent(0x600981079d65a285d008308db02b846c/src/routing_spec.first(0x600981079d65a285d008308db02b846c/src/routing_spec.hits(routes, path), method))) : Bool} 0x600981079d65a285d008308db02b846c/src/ROUTING_WITNESSES.bend case_sensitive_method {0x600981079d65a285d008308db02b846c/src/contracts.select([0x600981079d65a285d008308db02b846c/src/contracts.Route{0n, "GET", "/x", False{}, []}], "get", "/x") == 0x600981079d65a285d008308db02b846c/src/contracts.WrongMethod{["GET"]} : 0x600981079d65a285d008308db02b846c/src/contracts.Selection} 0x600981079d65a285d008308db02b846c/src/ROUTING_WITNESSES.bend empty_capture_rejected {0x600981079d65a285d008308db02b846c/src/contracts.match_path("/x/:id", "/x/") == 0x600981079d65a285d008308db02b846c/src/contracts.NoMatch{} : 0x600981079d65a285d008308db02b846c/src/contracts.Match} 0x600981079d65a285d008308db02b846c/src/ROUTING_WITNESSES.bend first_route_wins {0x600981079d65a285d008308db02b846c/src/contracts.select([0x600981079d65a285d008308db02b846c/src/contracts.Route{0n, "GET", "/:id", False{}, []}, 0x600981079d65a285d008308db02b846c/src/contracts.Route{1n, "GET", "/x", True{}, []}], "GET", "/x") == 0x600981079d65a285d008308db02b846c/src/contracts.Found{0x600981079d65a285d008308db02b846c/src/contracts.Route{0n, "GET", "/:id", False{}, []}, [0x600981079d65a285d008308db02b846c/src/contracts.Param{"id", "x"}]} : 0x600981079d65a285d008308db02b846c/src/contracts.Selection} 0x600981079d65a285d008308db02b846c/src/ROUTING_WITNESSES.bend allow_last_occurrence_order {0x600981079d65a285d008308db02b846c/src/contracts.select([0x600981079d65a285d008308db02b846c/src/contracts.Route{0n, "GET", "/x", False{}, []}, 0x600981079d65a285d008308db02b846c/src/contracts.Route{1n, "POST", "/x", False{}, []}, 0x600981079d65a285d008308db02b846c/src/contracts.Route{2n, "GET", "/x", False{}, []}], "DELETE", "/x") == 0x600981079d65a285d008308db02b846c/src/contracts.WrongMethod{["POST", "GET"]} : 0x600981079d65a285d008308db02b846c/src/contracts.Selection} 0x600981079d65a285d008308db02b846c/src/ROUTING_WITNESSES.bend raw_segments_and_capture_order {0x600981079d65a285d008308db02b846c/src/contracts.match_path("/:a//:b/", "/%2F//X/") == 0x600981079d65a285d008308db02b846c/src/contracts.Matched{[0x600981079d65a285d008308db02b846c/src/contracts.Param{"a", "%2F"}, 0x600981079d65a285d008308db02b846c/src/contracts.Param{"b", "X"}]} : 0x600981079d65a285d008308db02b846c/src/contracts.Match} 0x600981079d65a285d008308db02b846c/src/ROUTING_WITNESSES.bend empty_parameter_name_rejected {0x600981079d65a285d008308db02b846c/src/contracts.match_path("/:", "/x") == 0x600981079d65a285d008308db02b846c/src/contracts.NoMatch{} : 0x600981079d65a285d008308db02b846c/src/contracts.Match} 0x620317aa272e53852c5b5baae68a727b/deque.bend Deque.to_list.new @-A:Data -> {Deque.to_list(&2, A, Deque.new(&2, A)) == [] : List<&2, A>} 0x620317aa272e53852c5b5baae68a727b/deque.bend Deque.to_list.push_front @-A:Data -> @-x:A -> @d:Deque<&2, A> -> {Deque.to_list(&2, A, Deque.push_front(&2, A, x, d)) == x <> Deque.to_list(&2, A, d) : List<&2, A>} 0x620317aa272e53852c5b5baae68a727b/deque.bend Deque.pop_front.push_front @-A:Data -> @-x:A -> @d:Deque<&2, A> -> {Deque.pop_front(&2, A, Deque.push_front(&2, A, x, d)) == Some{(x, d)} : Maybe<&1, Pair(A, Deque<&2, A>)>} 0x620317aa272e53852c5b5baae68a727b/deque.bend Deque.pop_back.push_back @-A:Data -> @-x:A -> @d:Deque<&2, A> -> {Deque.pop_back(&2, A, Deque.push_back(&2, A, x, d)) == Some{(x, d)} : Maybe<&1, Pair(A, Deque<&2, A>)>} 0x620317aa272e53852c5b5baae68a727b/deque.bend Deque.lemma.append_nil @-A:Data -> @xs:List<&2, A> -> {List.append(&2, A, xs, []) == xs : List<&2, A>} 0x620317aa272e53852c5b5baae68a727b/deque.bend Deque.lemma.append_assoc @-A:Data -> @xs:List<&2, A> -> @-ys:List<&2, A> -> @-zs:List<&2, A> -> {List.append(&2, A, List.append(&2, A, xs, ys), zs) == List.append(&2, A, xs, List.append(&2, A, ys, zs)) : List<&2, A>} 0x620317aa272e53852c5b5baae68a727b/deque.bend Deque.to_list.from_list @-A:Data -> @xs:List<&2, A> -> {Deque.to_list(&2, A, Deque.from_list(&2, A, xs)) == xs : List<&2, A>} 0x620317aa272e53852c5b5baae68a727b/deque.bend Deque.lemma.reverse_go @-A:Data -> @xs:List<&2, A> -> @-acc:List<&2, A> -> {List.append(&2, A, List.reverse.go(&2, A, xs, []), acc) == List.reverse.go(&2, A, xs, acc) : List<&2, A>} 0x620317aa272e53852c5b5baae68a727b/deque.bend Deque.to_list.push_back @-A:Data -> @-x:A -> @d:Deque<&2, A> -> {Deque.to_list(&2, A, Deque.push_back(&2, A, x, d)) == List.append(&2, A, Deque.to_list(&2, A, d), [x]) : List<&2, A>} 0x620317aa272e53852c5b5baae68a727b/heap.bend Heap.pop.push_new @-x:U32 -> {Heap.pop(U32, U32.is_le, Heap.push(U32, U32.is_le, x, Heap.new(U32))) == Some{(x, Heap.new(U32))} : Maybe<&1, Pair(U32, Heap)>} 0x620317aa272e53852c5b5baae68a727b/heap.bend Heap.size.push @-x:U32 -> @h:Heap -> {Heap.size(U32, Heap.push(U32, U32.is_le, x, h)) == 1n+Heap.size(U32, h) : Nat} 0x64e1b9e0466cf913fa57e70aeb11c176/io/io.bend text.close @m:Pair(File, Result<&1, &1, Pair(U32, String), String>) -> IO(Read) 0x64e1b9e0466cf913fa57e70aeb11c176/io/io.bend text.size @m:Pair(File, Result<&1, &1, Pair(U32, String), U32>) -> @limit:Maybe<&2, U32> -> IO(Read) 0x64e1b9e0466cf913fa57e70aeb11c176/io/io.bend bytes.close @m:Pair(File, Result<&1, &1, Pair(U32, String), List<&2, U32>>) -> IO(List<&2, U32>) 0x64e1b9e0466cf913fa57e70aeb11c176/io/io.bend bytes.size @m:Pair(File, Result<&1, &1, Pair(U32, String), U32>) -> IO(List<&2, U32>) 0x6ab8d4bb6183370cf3b7d5d7fda20aff/add_zero.bend add_zero @x:Nat -> {Nat.add(x, 0n) == x : Nat} 0x7e29b7224f420229b0320d908dff8769/LAWS.bend prediction_count @+model:0x7e29b7224f420229b0320d908dff8769/src/linear_regression.Model -> @+rows:0x7e29b7224f420229b0320d908dff8769/src/batch.Batch -> {0x7e29b7224f420229b0320d908dff8769/src/batch.count(F32, 0x7e29b7224f420229b0320d908dff8769/src/linear_regression.predict_batch(model, rows)) == 0x7e29b7224f420229b0320d908dff8769/src/batch.count(F32, rows) : Nat} 0x7e29b7224f420229b0320d908dff8769/LAWS.bend rejects_empty_training {0x7e29b7224f420229b0320d908dff8769/src/linear_regression.fit(0x7e29b7224f420229b0320d908dff8769/src/batch.Empty{}) == Fail{0x7e29b7224f420229b0320d908dff8769/src/linear_regression.NotEnoughSamples{}} : Result<&2, &2, 0x7e29b7224f420229b0320d908dff8769/src/linear_regression.FitError, 0x7e29b7224f420229b0320d908dff8769/src/linear_regression.Model>} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend content_identity @id:U32 -> {0x88d5b48c03f82f217d3a2aa0656744f4/proof_observations.text(0x88d5b48c03f82f217d3a2aa0656744f4/main.Source.new(id, "a😀\nβ")) == Done{"a😀\nβ"} : Result<&1, &1, 0x88d5b48c03f82f217d3a2aa0656744f4/types.Error, String>} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend file_identity @id:U32 -> {0x88d5b48c03f82f217d3a2aa0656744f4/proof_observations.file(0x88d5b48c03f82f217d3a2aa0656744f4/main.Source.new(id, "a😀\nβ")) == Done{id} : Result<&1, &1, 0x88d5b48c03f82f217d3a2aa0656744f4/types.Error, U32>} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend empty_content @id:U32 -> {0x88d5b48c03f82f217d3a2aa0656744f4/proof_observations.text(0x88d5b48c03f82f217d3a2aa0656744f4/main.Source.bounded(id, "", 0)) == Done{""} : Result<&1, &1, 0x88d5b48c03f82f217d3a2aa0656744f4/types.Error, String>} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend empty_lines @id:U32 -> {0x88d5b48c03f82f217d3a2aa0656744f4/proof_observations.lines(0x88d5b48c03f82f217d3a2aa0656744f4/main.Source.new(id, "")) == Done{1} : Result<&1, &1, 0x88d5b48c03f82f217d3a2aa0656744f4/types.Error, U32>} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend scalar_units @id:U32 -> {0x88d5b48c03f82f217d3a2aa0656744f4/proof_observations.length(0x88d5b48c03f82f217d3a2aa0656744f4/main.Source.new(id, "a😀\nβ")) == Done{4} : Result<&1, &1, 0x88d5b48c03f82f217d3a2aa0656744f4/types.Error, U32>} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend indexed_value {0x88d5b48c03f82f217d3a2aa0656744f4/observations.get("a😀\nβ", 1) == True{} : Bool} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend peek_codepoint {0x88d5b48c03f82f217d3a2aa0656744f4/observations.peek("a😀", 0x88d5b48c03f82f217d3a2aa0656744f4/types.Cursor{7, 1}, Done{Some{'😀'}}) == True{} : Bool} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend bump_restore_content {0x88d5b48c03f82f217d3a2aa0656744f4/observations.bump("a😀", 0x88d5b48c03f82f217d3a2aa0656744f4/types.Cursor{7, 1}, 0x88d5b48c03f82f217d3a2aa0656744f4/types.Cursor{7, 2}, Some{'😀'}) == True{} : Bool} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend eof_fixed_point {0x88d5b48c03f82f217d3a2aa0656744f4/observations.bump("a😀", 0x88d5b48c03f82f217d3a2aa0656744f4/types.Cursor{7, 2}, 0x88d5b48c03f82f217d3a2aa0656744f4/types.Cursor{7, 2}, None{}) == True{} : Bool} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend span_order {0x88d5b48c03f82f217d3a2aa0656744f4/observations.extract("a😀\nβ", 0x88d5b48c03f82f217d3a2aa0656744f4/types.Span{7, 1, 3}, Done{"😀\n"}) == True{} : Bool} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend empty_eof_span {0x88d5b48c03f82f217d3a2aa0656744f4/observations.span("a😀", 2, 2) == True{} : Bool} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend newline_location {0x88d5b48c03f82f217d3a2aa0656744f4/observations.locate("a😀\nβ", 3) == True{} : Bool} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend newline_roundtrip {0x88d5b48c03f82f217d3a2aa0656744f4/observations.roundtrip("a😀\nβ", 3) == True{} : Bool} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend cr_is_content {0x88d5b48c03f82f217d3a2aa0656744f4/observations.locate("a\rb", 2) == True{} : Bool} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend crlf_location {0x88d5b48c03f82f217d3a2aa0656744f4/observations.locate("a\r\nb", 3) == True{} : Bool} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend trailing_line {0x88d5b48c03f82f217d3a2aa0656744f4/observations.metadata("\n", 2) == True{} : Bool} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend canonical_location {0x88d5b48c03f82f217d3a2aa0656744f4/observations.offset("a\nb", 0x88d5b48c03f82f217d3a2aa0656744f4/types.Location{0, 2}) == True{} : Bool} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend foreign_cursor {0x88d5b48c03f82f217d3a2aa0656744f4/observations.restore("a", 0x88d5b48c03f82f217d3a2aa0656744f4/types.Cursor{8, 0}, Fail{0x88d5b48c03f82f217d3a2aa0656744f4/types.ForeignFile{}}) == True{} : Bool} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend foreign_span {0x88d5b48c03f82f217d3a2aa0656744f4/observations.extract("a", 0x88d5b48c03f82f217d3a2aa0656744f4/types.Span{8, 0, 1}, Fail{0x88d5b48c03f82f217d3a2aa0656744f4/types.ForeignFile{}}) == True{} : Bool} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend rejected_span {0x88d5b48c03f82f217d3a2aa0656744f4/observations.span_reject("ab", 2, 1) == True{} : Bool} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend rejected_offset {0x88d5b48c03f82f217d3a2aa0656744f4/observations.cursor("a", 2, Fail{0x88d5b48c03f82f217d3a2aa0656744f4/types.Bounds{}}) == True{} : Bool} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend exhausted_limit {0x88d5b48c03f82f217d3a2aa0656744f4/observations.rejected(0x88d5b48c03f82f217d3a2aa0656744f4/types.Limit{}, 0x88d5b48c03f82f217d3a2aa0656744f4/main.Source.bounded(7, "abc", 2)) == True{} : Bool} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend invalid_scalar {0x88d5b48c03f82f217d3a2aa0656744f4/observations.rejected(0x88d5b48c03f82f217d3a2aa0656744f4/types.InvalidScalar{}, 0x88d5b48c03f82f217d3a2aa0656744f4/main.Source.new(7, "\u{d800}")) == True{} : Bool} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend checked_cursor @s:0x88d5b48c03f82f217d3a2aa0656744f4/main.Source -> @id:U32 -> @i:U32 -> {0x88d5b48c03f82f217d3a2aa0656744f4/main.cursor_if(s, 0x88d5b48c03f82f217d3a2aa0656744f4/types.Cursor{id, i}, True{}) == (s, Done{0x88d5b48c03f82f217d3a2aa0656744f4/types.Cursor{id, i}}) : Pair(0x88d5b48c03f82f217d3a2aa0656744f4/main.Source, Result<&1, &1, 0x88d5b48c03f82f217d3a2aa0656744f4/types.Error, 0x88d5b48c03f82f217d3a2aa0656744f4/types.Cursor>)} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend accepted_cursor @s:0x88d5b48c03f82f217d3a2aa0656744f4/main.Source -> @i:U32 -> @valid:{U32.is_le(i, 0x88d5b48c03f82f217d3a2aa0656744f4/proof_observations.size(s)) == True{} : Bool} -> {0x88d5b48c03f82f217d3a2aa0656744f4/main.Source.cursor(s, i) == (s, Done{0x88d5b48c03f82f217d3a2aa0656744f4/types.Cursor{0x88d5b48c03f82f217d3a2aa0656744f4/proof_observations.identity(s), i}}) : Pair(0x88d5b48c03f82f217d3a2aa0656744f4/main.Source, Result<&1, &1, 0x88d5b48c03f82f217d3a2aa0656744f4/types.Error, 0x88d5b48c03f82f217d3a2aa0656744f4/types.Cursor>)} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend rejected_cursor @s:0x88d5b48c03f82f217d3a2aa0656744f4/main.Source -> @i:U32 -> @invalid:{U32.is_le(i, 0x88d5b48c03f82f217d3a2aa0656744f4/proof_observations.size(s)) == False{} : Bool} -> {0x88d5b48c03f82f217d3a2aa0656744f4/main.Source.cursor(s, i) == (s, Fail{0x88d5b48c03f82f217d3a2aa0656744f4/types.Bounds{}}) : Pair(0x88d5b48c03f82f217d3a2aa0656744f4/main.Source, Result<&1, &1, 0x88d5b48c03f82f217d3a2aa0656744f4/types.Error, 0x88d5b48c03f82f217d3a2aa0656744f4/types.Cursor>)} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend accepted_span @s:0x88d5b48c03f82f217d3a2aa0656744f4/main.Source -> @a:U32 -> @b:U32 -> @valid:{Bool.and(U32.is_le(a, b), U32.is_le(b, 0x88d5b48c03f82f217d3a2aa0656744f4/proof_observations.size(s))) == True{} : Bool} -> {0x88d5b48c03f82f217d3a2aa0656744f4/main.Source.span(s, a, b) == (s, Done{0x88d5b48c03f82f217d3a2aa0656744f4/types.Span{0x88d5b48c03f82f217d3a2aa0656744f4/proof_observations.identity(s), a, b}}) : Pair(0x88d5b48c03f82f217d3a2aa0656744f4/main.Source, Result<&1, &1, 0x88d5b48c03f82f217d3a2aa0656744f4/types.Error, 0x88d5b48c03f82f217d3a2aa0656744f4/types.Span>)} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend rejected_span_universal @s:0x88d5b48c03f82f217d3a2aa0656744f4/main.Source -> @a:U32 -> @b:U32 -> @invalid:{Bool.and(U32.is_le(a, b), U32.is_le(b, 0x88d5b48c03f82f217d3a2aa0656744f4/proof_observations.size(s))) == False{} : Bool} -> {0x88d5b48c03f82f217d3a2aa0656744f4/main.Source.span(s, a, b) == (s, Fail{0x88d5b48c03f82f217d3a2aa0656744f4/types.InvalidRange{}}) : Pair(0x88d5b48c03f82f217d3a2aa0656744f4/main.Source, Result<&1, &1, 0x88d5b48c03f82f217d3a2aa0656744f4/types.Error, 0x88d5b48c03f82f217d3a2aa0656744f4/types.Span>)} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend foreign_restore @s:0x88d5b48c03f82f217d3a2aa0656744f4/main.Source -> @foreign:U32 -> @i:U32 -> @different:{U32.is_eq(foreign, 0x88d5b48c03f82f217d3a2aa0656744f4/proof_observations.identity(s)) == False{} : Bool} -> {0x88d5b48c03f82f217d3a2aa0656744f4/main.Source.restore(s, 0x88d5b48c03f82f217d3a2aa0656744f4/types.Cursor{foreign, i}) == (s, Fail{0x88d5b48c03f82f217d3a2aa0656744f4/types.ForeignFile{}}) : Pair(0x88d5b48c03f82f217d3a2aa0656744f4/main.Source, Result<&1, &1, 0x88d5b48c03f82f217d3a2aa0656744f4/types.Error, 0x88d5b48c03f82f217d3a2aa0656744f4/types.Cursor>)} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend inhabited_cursor_domain {0x88d5b48c03f82f217d3a2aa0656744f4/observations.cursor("ab", 1, Done{0x88d5b48c03f82f217d3a2aa0656744f4/types.Cursor{7, 1}}) == True{} : Bool} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend inhabited_span_domain {0x88d5b48c03f82f217d3a2aa0656744f4/observations.span("ab", 0, 2) == True{} : Bool} 0x88d5b48c03f82f217d3a2aa0656744f4/LAWS.bend maximum_policy {0x88d5b48c03f82f217d3a2aa0656744f4/main.Source.maximum == 16777215 : U32} 0x92882293385d0b92a8d4a4a676bbf076/bend_tensors.bend VecT @n:Nat -> Data 0x92882293385d0b92a8d4a4a676bbf076/bend_tensors.bend MatT @r:Nat -> @c:Nat -> Data 0x958db28bf0cef817bff69fac7beb9846/src/CONTRACTS_PROOF.bend protected_denies @-S:Data -> @-B:Data -> @+state:S -> @next:(@_:S -> 0x958db28bf0cef817bff69fac7beb9846/src/contracts.Decision) -> {0x958db28bf0cef817bff69fac7beb9846/src/contracts.authorize(S, B, True{}, False{}, state, next) == 0x958db28bf0cef817bff69fac7beb9846/src/contracts.Decision{state, 0x958db28bf0cef817bff69fac7beb9846/src/contracts.Error{401n, "unauthorized", []}} : 0x958db28bf0cef817bff69fac7beb9846/src/contracts.Decision} 0x958db28bf0cef817bff69fac7beb9846/src/CONTRACTS_PROOF.bend read_preserves @-S:Data -> @-B:Data -> @+state:S -> @proposed:0x958db28bf0cef817bff69fac7beb9846/src/contracts.Decision -> {0x958db28bf0cef817bff69fac7beb9846/src/contracts.state(S, B, 0x958db28bf0cef817bff69fac7beb9846/src/contracts.preserve(S, B, True{}, state, proposed)) == state : S} 0x958db28bf0cef817bff69fac7beb9846/src/CONTRACTS_PROOF.bend dispatch_read_preserves @-S:Data -> @-B:Data -> @selection:0x958db28bf0cef817bff69fac7beb9846/src/contracts.Selection -> @valid:Bool -> @+state:S -> @next:(@_:0x958db28bf0cef817bff69fac7beb9846/src/contracts.Route -> @_:List<&2, 0x958db28bf0cef817bff69fac7beb9846/src/contracts.Param> -> @_:S -> 0x958db28bf0cef817bff69fac7beb9846/src/contracts.Decision) -> {0x958db28bf0cef817bff69fac7beb9846/src/contracts.state(S, B, 0x958db28bf0cef817bff69fac7beb9846/src/contracts.run(S, B, selection, True{}, valid, state, next)) == state : S} 0x958db28bf0cef817bff69fac7beb9846/src/CONTRACTS_PROOF.bend get_is_read {0x958db28bf0cef817bff69fac7beb9846/src/contracts.readonly("GET") == True{} : Bool} 0x958db28bf0cef817bff69fac7beb9846/src/CONTRACTS_PROOF.bend head_is_read {0x958db28bf0cef817bff69fac7beb9846/src/contracts.readonly("HEAD") == True{} : Bool} 0x958db28bf0cef817bff69fac7beb9846/src/CONTRACTS_PROOF.bend unknown_is_404 @-S:Data -> @-B:Data -> @read:Bool -> @valid:Bool -> @+state:S -> @next:(@_:0x958db28bf0cef817bff69fac7beb9846/src/contracts.Route -> @_:List<&2, 0x958db28bf0cef817bff69fac7beb9846/src/contracts.Param> -> @_:S -> 0x958db28bf0cef817bff69fac7beb9846/src/contracts.Decision) -> {0x958db28bf0cef817bff69fac7beb9846/src/contracts.run(S, B, 0x958db28bf0cef817bff69fac7beb9846/src/contracts.Missing{}, read, valid, state, next) == 0x958db28bf0cef817bff69fac7beb9846/src/contracts.Decision{state, 0x958db28bf0cef817bff69fac7beb9846/src/contracts.Error{404n, "not_found", []}} : 0x958db28bf0cef817bff69fac7beb9846/src/contracts.Decision} 0x958db28bf0cef817bff69fac7beb9846/src/CONTRACTS_PROOF.bend wrong_method_is_405 @-S:Data -> @-B:Data -> @+methods:List<&2, String> -> @read:Bool -> @valid:Bool -> @+state:S -> @next:(@_:0x958db28bf0cef817bff69fac7beb9846/src/contracts.Route -> @_:List<&2, 0x958db28bf0cef817bff69fac7beb9846/src/contracts.Param> -> @_:S -> 0x958db28bf0cef817bff69fac7beb9846/src/contracts.Decision) -> {0x958db28bf0cef817bff69fac7beb9846/src/contracts.run(S, B, 0x958db28bf0cef817bff69fac7beb9846/src/contracts.WrongMethod{methods}, read, valid, state, next) == 0x958db28bf0cef817bff69fac7beb9846/src/contracts.Decision{state, 0x958db28bf0cef817bff69fac7beb9846/src/contracts.Error{405n, "method_not_allowed", methods}} : 0x958db28bf0cef817bff69fac7beb9846/src/contracts.Decision} 0x958db28bf0cef817bff69fac7beb9846/src/CONTRACTS_PROOF.bend protected_route_denies @-S:Data -> @-B:Data -> @id:Nat -> @method:String -> @pattern:String -> @statuses:List<&2, Nat> -> @params:List<&2, 0x958db28bf0cef817bff69fac7beb9846/src/contracts.Param> -> @read:Bool -> @+state:S -> @next:(@_:0x958db28bf0cef817bff69fac7beb9846/src/contracts.Route -> @_:List<&2, 0x958db28bf0cef817bff69fac7beb9846/src/contracts.Param> -> @_:S -> 0x958db28bf0cef817bff69fac7beb9846/src/contracts.Decision) -> {0x958db28bf0cef817bff69fac7beb9846/src/contracts.run(S, B, 0x958db28bf0cef817bff69fac7beb9846/src/contracts.Found{0x958db28bf0cef817bff69fac7beb9846/src/contracts.Route{id, method, pattern, True{}, statuses}, params}, read, False{}, state, next) == 0x958db28bf0cef817bff69fac7beb9846/src/contracts.Decision{state, 0x958db28bf0cef817bff69fac7beb9846/src/contracts.Error{401n, "unauthorized", []}} : 0x958db28bf0cef817bff69fac7beb9846/src/contracts.Decision} 0x958db28bf0cef817bff69fac7beb9846/src/LAWS.bend timeout_is_explicit @+ms:U32 -> @+request:0x958db28bf0cef817bff69fac7beb9846/src/http.Request -> {0x958db28bf0cef817bff69fac7beb9846/src/http.timeout(0x958db28bf0cef817bff69fac7beb9846/src/http.with_timeout(ms, request)) == ms : U32} 0x958db28bf0cef817bff69fac7beb9846/src/LAWS.bend body_limit_is_explicit @+bytes:U32 -> @+request:0x958db28bf0cef817bff69fac7beb9846/src/http.Request -> {0x958db28bf0cef817bff69fac7beb9846/src/http.body_limit(0x958db28bf0cef817bff69fac7beb9846/src/http.with_max_bytes(bytes, request)) == bytes : U32} 0x958db28bf0cef817bff69fac7beb9846/src/LAWS.bend setting_timeout_preserves_body_limit @+ms:U32 -> @+request:0x958db28bf0cef817bff69fac7beb9846/src/http.Request -> {0x958db28bf0cef817bff69fac7beb9846/src/http.body_limit(0x958db28bf0cef817bff69fac7beb9846/src/http.with_timeout(ms, request)) == 0x958db28bf0cef817bff69fac7beb9846/src/http.body_limit(request) : U32} 0x958db28bf0cef817bff69fac7beb9846/src/LAWS.bend setting_header_preserves_timeout @+name:String -> @+value:String -> @+request:0x958db28bf0cef817bff69fac7beb9846/src/http.Request -> {0x958db28bf0cef817bff69fac7beb9846/src/http.timeout(0x958db28bf0cef817bff69fac7beb9846/src/http.with_header(name, value, request)) == 0x958db28bf0cef817bff69fac7beb9846/src/http.timeout(request) : U32} 0x958db28bf0cef817bff69fac7beb9846/src/LAWS.bend setting_header_preserves_body_limit @+name:String -> @+value:String -> @+request:0x958db28bf0cef817bff69fac7beb9846/src/http.Request -> {0x958db28bf0cef817bff69fac7beb9846/src/http.body_limit(0x958db28bf0cef817bff69fac7beb9846/src/http.with_header(name, value, request)) == 0x958db28bf0cef817bff69fac7beb9846/src/http.body_limit(request) : U32} 0x983079cc7642e53dbc9aaf7fa2636b20/LAWS.bend add_zero @x:Nat -> {Nat.add(x, 0n) == x : Nat} 0x983079cc7642e53dbc9aaf7fa2636b20/LAWS.bend append_nil @xs:List<&1, Nat> -> {List.append(&1, Nat, xs, []) == xs : List<&1, Nat>} 0x983079cc7642e53dbc9aaf7fa2636b20/LAWS.bend total_cons @h:Nat -> @t:List<&1, Nat> -> {0x983079cc7642e53dbc9aaf7fa2636b20/src/math.total(h <> t) == Nat.add(h, 0x983079cc7642e53dbc9aaf7fa2636b20/src/math.total(t)) : Nat} 0x99e32f5f97dad3791a32b01d133555c5/LAWS.bend path_empty @-V:Data -> @+path:List<&2, Bool> -> {0x99e32f5f97dad3791a32b01d133555c5/main.get_path(V, path, 0x99e32f5f97dad3791a32b01d133555c5/main.Tip{}) == None{} : Maybe<&2, V>} 0x99e32f5f97dad3791a32b01d133555c5/LAWS.bend path_set @-V:Data -> @+path:List<&2, Bool> -> @+m:0x99e32f5f97dad3791a32b01d133555c5/main.IntMap -> @+key:U32 -> @+v:V -> {0x99e32f5f97dad3791a32b01d133555c5/main.get_path(V, path, 0x99e32f5f97dad3791a32b01d133555c5/main.set_path(V, path, m, key, v)) == Some{v} : Maybe<&2, V>} 0x99e32f5f97dad3791a32b01d133555c5/LAWS.bend branch_low @-V:Data -> @+lo:0x99e32f5f97dad3791a32b01d133555c5/main.IntMap -> @+hi:0x99e32f5f97dad3791a32b01d133555c5/main.IntMap -> {0x99e32f5f97dad3791a32b01d133555c5/main.low(V, 0x99e32f5f97dad3791a32b01d133555c5/main.branch(V, lo, hi)) == lo : 0x99e32f5f97dad3791a32b01d133555c5/main.IntMap} 0x99e32f5f97dad3791a32b01d133555c5/LAWS.bend branch_high @-V:Data -> @+lo:0x99e32f5f97dad3791a32b01d133555c5/main.IntMap -> @+hi:0x99e32f5f97dad3791a32b01d133555c5/main.IntMap -> {0x99e32f5f97dad3791a32b01d133555c5/main.high(V, 0x99e32f5f97dad3791a32b01d133555c5/main.branch(V, lo, hi)) == hi : 0x99e32f5f97dad3791a32b01d133555c5/main.IntMap} 0x99e32f5f97dad3791a32b01d133555c5/LAWS.bend path_remove @-V:Data -> @+path:List<&2, Bool> -> @+m:0x99e32f5f97dad3791a32b01d133555c5/main.IntMap -> {0x99e32f5f97dad3791a32b01d133555c5/main.get_path(V, path, 0x99e32f5f97dad3791a32b01d133555c5/main.remove_path(V, path, m)) == None{} : Maybe<&2, V>} 0x99e32f5f97dad3791a32b01d133555c5/LAWS.bend empty_get @-V:Data -> @+key:U32 -> {0x99e32f5f97dad3791a32b01d133555c5/main.IntMap.get(V, 0x99e32f5f97dad3791a32b01d133555c5/main.IntMap.empty(V), key) == None{} : Maybe<&2, V>} 0x99e32f5f97dad3791a32b01d133555c5/LAWS.bend set_get @-V:Data -> @+m:0x99e32f5f97dad3791a32b01d133555c5/main.IntMap -> @+key:U32 -> @+v:V -> {0x99e32f5f97dad3791a32b01d133555c5/main.IntMap.get(V, 0x99e32f5f97dad3791a32b01d133555c5/main.IntMap.set(V, m, key, v), key) == Some{v} : Maybe<&2, V>} 0x99e32f5f97dad3791a32b01d133555c5/LAWS.bend remove_get @-V:Data -> @+m:0x99e32f5f97dad3791a32b01d133555c5/main.IntMap -> @+key:U32 -> {0x99e32f5f97dad3791a32b01d133555c5/main.IntMap.get(V, 0x99e32f5f97dad3791a32b01d133555c5/main.IntMap.remove(V, m, key), key) == None{} : Maybe<&2, V>} 0x99e32f5f97dad3791a32b01d133555c5/LAWS.bend set_contains @-V:Data -> @+m:0x99e32f5f97dad3791a32b01d133555c5/main.IntMap -> @+key:U32 -> @+v:V -> {0x99e32f5f97dad3791a32b01d133555c5/main.IntMap.contains(V, 0x99e32f5f97dad3791a32b01d133555c5/main.IntMap.set(V, m, key, v), key) == True{} : Bool} 0x99e32f5f97dad3791a32b01d133555c5/LAWS.bend overwrite @-V:Data -> @+m:0x99e32f5f97dad3791a32b01d133555c5/main.IntMap -> @+key:U32 -> @+old:V -> @+v:V -> {0x99e32f5f97dad3791a32b01d133555c5/main.IntMap.get(V, 0x99e32f5f97dad3791a32b01d133555c5/main.IntMap.set(V, 0x99e32f5f97dad3791a32b01d133555c5/main.IntMap.set(V, m, key, old), key, v), key) == Some{v} : Maybe<&2, V>} 0x99e32f5f97dad3791a32b01d133555c5/LAWS.bend path_preserve @-V:Data -> @+p:List<&2, Bool> -> @+q:List<&2, Bool> -> @+m:0x99e32f5f97dad3791a32b01d133555c5/main.IntMap -> @+key:U32 -> @+v:V -> @distinct:separated(p, q) -> {0x99e32f5f97dad3791a32b01d133555c5/main.get_path(V, q, 0x99e32f5f97dad3791a32b01d133555c5/main.set_path(V, p, m, key, v)) == 0x99e32f5f97dad3791a32b01d133555c5/main.get_path(V, q, m) : Maybe<&2, V>} 0x99e32f5f97dad3791a32b01d133555c5/LAWS.bend set_preserves @-V:Data -> @+m:0x99e32f5f97dad3791a32b01d133555c5/main.IntMap -> @+key:U32 -> @+other:U32 -> @+v:V -> @distinct:separated(0x99e32f5f97dad3791a32b01d133555c5/main.bits(32n, key), 0x99e32f5f97dad3791a32b01d133555c5/main.bits(32n, other)) -> {0x99e32f5f97dad3791a32b01d133555c5/main.IntMap.get(V, 0x99e32f5f97dad3791a32b01d133555c5/main.IntMap.set(V, m, key, v), other) == 0x99e32f5f97dad3791a32b01d133555c5/main.IntMap.get(V, m, other) : Maybe<&2, V>} 0x99e32f5f97dad3791a32b01d133555c5/LAWS.bend distinct_witness separated(0x99e32f5f97dad3791a32b01d133555c5/main.bits(32n, 0), 0x99e32f5f97dad3791a32b01d133555c5/main.bits(32n, 2147483648)) 0x99e32f5f97dad3791a32b01d133555c5/LAWS.bend boundary_fixture {0x99e32f5f97dad3791a32b01d133555c5/fixtures.boundary == True{} : Bool} 0x99e32f5f97dad3791a32b01d133555c5/LAWS.bend fold_fixture {0x99e32f5f97dad3791a32b01d133555c5/fixtures.order_case == True{} : Bool} 0x99e32f5f97dad3791a32b01d133555c5/LAWS.bend union_fixture {0x99e32f5f97dad3791a32b01d133555c5/fixtures.unions == True{} : Bool} 0x99e32f5f97dad3791a32b01d133555c5/LAWS.bend invocation_fixture {0x99e32f5f97dad3791a32b01d133555c5/fixtures.trace_case == True{} : Bool} 0x99e32f5f97dad3791a32b01d133555c5/LAWS.bend model_union_fixture {0x99e32f5f97dad3791a32b01d133555c5/fixtures.union_model == True{} : Bool} 0x99e32f5f97dad3791a32b01d133555c5/LAWS.bend observe_low @-V:Data -> @+path:List<&2, Bool> -> @+lo:0x99e32f5f97dad3791a32b01d133555c5/main.IntMap -> @+hi:0x99e32f5f97dad3791a32b01d133555c5/main.IntMap -> {0x99e32f5f97dad3791a32b01d133555c5/main.get_path(V, path, 0x99e32f5f97dad3791a32b01d133555c5/main.low(V, 0x99e32f5f97dad3791a32b01d133555c5/main.branch(V, lo, hi))) == 0x99e32f5f97dad3791a32b01d133555c5/main.get_path(V, path, lo) : Maybe<&2, V>} 0x99e32f5f97dad3791a32b01d133555c5/LAWS.bend observe_high @-V:Data -> @+path:List<&2, Bool> -> @+lo:0x99e32f5f97dad3791a32b01d133555c5/main.IntMap -> @+hi:0x99e32f5f97dad3791a32b01d133555c5/main.IntMap -> {0x99e32f5f97dad3791a32b01d133555c5/main.get_path(V, path, 0x99e32f5f97dad3791a32b01d133555c5/main.high(V, 0x99e32f5f97dad3791a32b01d133555c5/main.branch(V, lo, hi))) == 0x99e32f5f97dad3791a32b01d133555c5/main.get_path(V, path, hi) : Maybe<&2, V>} 0x99e32f5f97dad3791a32b01d133555c5/LAWS.bend path_remove_preserve @-V:Data -> @+p:List<&2, Bool> -> @+q:List<&2, Bool> -> @+m:0x99e32f5f97dad3791a32b01d133555c5/main.IntMap -> @distinct:separated(p, q) -> {0x99e32f5f97dad3791a32b01d133555c5/main.get_path(V, q, 0x99e32f5f97dad3791a32b01d133555c5/main.remove_path(V, p, m)) == 0x99e32f5f97dad3791a32b01d133555c5/main.get_path(V, q, m) : Maybe<&2, V>} 0x99e32f5f97dad3791a32b01d133555c5/LAWS.bend remove_preserves @-V:Data -> @+m:0x99e32f5f97dad3791a32b01d133555c5/main.IntMap -> @+key:U32 -> @+other:U32 -> @distinct:separated(0x99e32f5f97dad3791a32b01d133555c5/main.bits(32n, key), 0x99e32f5f97dad3791a32b01d133555c5/main.bits(32n, other)) -> {0x99e32f5f97dad3791a32b01d133555c5/main.IntMap.get(V, 0x99e32f5f97dad3791a32b01d133555c5/main.IntMap.remove(V, m, key), other) == 0x99e32f5f97dad3791a32b01d133555c5/main.IntMap.get(V, m, other) : Maybe<&2, V>} 0x99e32f5f97dad3791a32b01d133555c5/LAWS.bend fold_seed_fixture {0x99e32f5f97dad3791a32b01d133555c5/fixtures.fold_seed_case == True{} : Bool} 0x9f15483a7cabc6e91e5092cc41829c43/i64.bend add_comm @a:I64 -> @b:I64 -> {add(a, b) == add(b, a) : I64} 0xa7cf27ec43eaf330fae4f6dc71a5f4aa/LAWS.bend empty_find_is_singleton {0xa7cf27ec43eaf330fae4f6dc71a5f4aa/lib.UnionFind.find(0xa7cf27ec43eaf330fae4f6dc71a5f4aa/lib.UnionFind.empty, 7) == 7 : U32} 0xa7cf27ec43eaf330fae4f6dc71a5f4aa/LAWS.bend new_is_empty {0xa7cf27ec43eaf330fae4f6dc71a5f4aa/lib.UnionFind.new == 0xa7cf27ec43eaf330fae4f6dc71a5f4aa/lib.UnionFind.empty : 0xa7cf27ec43eaf330fae4f6dc71a5f4aa/lib.UnionFind} 0xa7cf27ec43eaf330fae4f6dc71a5f4aa/LAWS.bend connected_is_reflexive {0xa7cf27ec43eaf330fae4f6dc71a5f4aa/lib.UnionFind.connected(0xa7cf27ec43eaf330fae4f6dc71a5f4aa/lib.UnionFind.empty, 7, 7) == True{} : Bool} 0xa7cf27ec43eaf330fae4f6dc71a5f4aa/LAWS.bend union_connects_arguments {0xa7cf27ec43eaf330fae4f6dc71a5f4aa/lib.UnionFind.connected(0xa7cf27ec43eaf330fae4f6dc71a5f4aa/lib.UnionFind.union(0xa7cf27ec43eaf330fae4f6dc71a5f4aa/lib.UnionFind.empty, 7, 11), 7, 11) == True{} : Bool} 0xa7cf27ec43eaf330fae4f6dc71a5f4aa/LAWS.bend union_is_idempotent_for_connection {0xa7cf27ec43eaf330fae4f6dc71a5f4aa/lib.UnionFind.connected(0xa7cf27ec43eaf330fae4f6dc71a5f4aa/lib.UnionFind.union(0xa7cf27ec43eaf330fae4f6dc71a5f4aa/lib.UnionFind.union(0xa7cf27ec43eaf330fae4f6dc71a5f4aa/lib.UnionFind.empty, 7, 11), 7, 11), 7, 11) == True{} : Bool} 0xa7cf27ec43eaf330fae4f6dc71a5f4aa/LAWS.bend union_preserves_root_of_first {0xa7cf27ec43eaf330fae4f6dc71a5f4aa/lib.UnionFind.find(0xa7cf27ec43eaf330fae4f6dc71a5f4aa/lib.UnionFind.union(0xa7cf27ec43eaf330fae4f6dc71a5f4aa/lib.UnionFind.empty, 7, 11), 7) == 7 : U32} 0xa7cf27ec43eaf330fae4f6dc71a5f4aa/LAWS.bend union_transitive_chain {0xa7cf27ec43eaf330fae4f6dc71a5f4aa/lib.UnionFind.connected(0xa7cf27ec43eaf330fae4f6dc71a5f4aa/lib.UnionFind.union(0xa7cf27ec43eaf330fae4f6dc71a5f4aa/lib.UnionFind.union(0xa7cf27ec43eaf330fae4f6dc71a5f4aa/lib.UnionFind.empty, 1, 2), 2, 3), 1, 3) == True{} : Bool} 0xab13df3d6c442b9408d79d186652b3aa/foo.bend l123 List<&2, U32> 0xab13df3d6c442b9408d79d186652b3aa/foo.bend l321 List<&2, U32> 0xab13df3d6c442b9408d79d186652b3aa/foo.bend insert.put @+x:U32 -> @h:U32 -> @+t:List<&2, U32> -> @r:List<&2, U32> -> @f:Bool -> List<&2, U32> 0xab13df3d6c442b9408d79d186652b3aa/foo.bend insert @+x:U32 -> @+xs:List<&2, U32> -> List<&2, U32> 0xab13df3d6c442b9408d79d186652b3aa/foo.bend sort @xs:List<&2, U32> -> List<&2, U32> 0xab13df3d6c442b9408d79d186652b3aa/foo.bend rev {List.reverse(&2, U32, l123) == l321 : List<&2, U32>} 0xab13df3d6c442b9408d79d186652b3aa/foo.bend rev2 {List.reverse(&2, U32, List.reverse(&2, U32, l123)) == l123 : List<&2, U32>} 0xab13df3d6c442b9408d79d186652b3aa/foo.bend srt {sort([3, 1, 2, 3]) == [1, 2, 3, 3] : List<&2, U32>} 0xab5b72f8eac09d083aa0b359ebe0a970/LAWS.bend make_ctor {0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.make(1.0, 2.0) == 0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2{1.0, 2.0} : 0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2} 0xab5b72f8eac09d083aa0b359ebe0a970/LAWS.bend zero_ctor {0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.zero == 0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2{0.0, 0.0} : 0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2} 0xab5b72f8eac09d083aa0b359ebe0a970/LAWS.bend unit_x_ctor {0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.unit_x == 0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2{1.0, 0.0} : 0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2} 0xab5b72f8eac09d083aa0b359ebe0a970/LAWS.bend unit_y_ctor {0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.unit_y == 0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2{0.0, 1.0} : 0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2} 0xab5b72f8eac09d083aa0b359ebe0a970/LAWS.bend x_projection {0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.x(0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.make(3.0, 4.0)) == 3.0 : F32} 0xab5b72f8eac09d083aa0b359ebe0a970/LAWS.bend y_projection {0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.y(0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.make(3.0, 4.0)) == 4.0 : F32} 0xab5b72f8eac09d083aa0b359ebe0a970/LAWS.bend add_zero {0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.add(0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.make(3.0, 4.0), 0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.zero) == 0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2{F32.add(3.0, 0.0), F32.add(4.0, 0.0)} : 0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2} 0xab5b72f8eac09d083aa0b359ebe0a970/LAWS.bend scale_one {0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.scale(0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.make(3.0, 4.0), 1.0) == 0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2{F32.mul(3.0, 1.0), F32.mul(4.0, 1.0)} : 0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2} 0xab5b72f8eac09d083aa0b359ebe0a970/LAWS.bend sub_self {0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.sub(0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.make(3.0, 4.0), 0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.make(3.0, 4.0)) == 0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2{F32.sub(3.0, 3.0), F32.sub(4.0, 4.0)} : 0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2} 0xab5b72f8eac09d083aa0b359ebe0a970/LAWS.bend dot {0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.dot(0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.make(3.0, 4.0), 0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.make(2.0, 5.0)) == F32.add(F32.mul(3.0, 2.0), F32.mul(4.0, 5.0)) : F32} 0xab5b72f8eac09d083aa0b359ebe0a970/LAWS.bend length_sq {0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.length_sq(0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.make(3.0, 4.0)) == F32.add(F32.mul(3.0, 3.0), F32.mul(4.0, 4.0)) : F32} 0xab5b72f8eac09d083aa0b359ebe0a970/LAWS.bend lerp {0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.lerp(0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.make(0.0, 2.0), 0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.make(10.0, 6.0), 0.25) == 0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.add(0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.make(0.0, 2.0), 0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.scale(0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.sub(0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.make(10.0, 6.0), 0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.make(0.0, 2.0)), 0.25)) : 0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2} 0xab5b72f8eac09d083aa0b359ebe0a970/LAWS.bend unit_x_dot_unit_y {0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.dot(0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.unit_x, 0xab5b72f8eac09d083aa0b359ebe0a970/lib.Vec2.unit_y) == F32.add(F32.mul(1.0, 0.0), F32.mul(0.0, 1.0)) : F32} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend xor_comm @n:Nat -> @a:Word(n) -> @b:Word(n) -> {Word.xor(n, a, b) == Word.xor(n, b, a) : Word(n)} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend xor_assoc @n:Nat -> @a:Word(n) -> @b:Word(n) -> @c:Word(n) -> {Word.xor(n, a, Word.xor(n, b, c)) == Word.xor(n, Word.xor(n, a, b), c) : Word(n)} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend xor_zero @n:Nat -> @a:Word(n) -> {Word.xor(n, a, Word.zero(n)) == a : Word(n)} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend xor_self @n:Nat -> @+a:Word(n) -> {Word.xor(n, a, a) == Word.zero(n) : Word(n)} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend and_comm @n:Nat -> @a:Word(n) -> @b:Word(n) -> {Word.and(n, a, b) == Word.and(n, b, a) : Word(n)} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend and_assoc @n:Nat -> @a:Word(n) -> @b:Word(n) -> @c:Word(n) -> {Word.and(n, a, Word.and(n, b, c)) == Word.and(n, Word.and(n, a, b), c) : Word(n)} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend or_comm @n:Nat -> @a:Word(n) -> @b:Word(n) -> {Word.or(n, a, b) == Word.or(n, b, a) : Word(n)} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend or_assoc @n:Nat -> @a:Word(n) -> @b:Word(n) -> @c:Word(n) -> {Word.or(n, a, Word.or(n, b, c)) == Word.or(n, Word.or(n, a, b), c) : Word(n)} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend not_not @n:Nat -> @a:Word(n) -> {Word.not(n, Word.not(n, a)) == a : Word(n)} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend not_and @n:Nat -> @a:Word(n) -> @b:Word(n) -> {Word.not(n, Word.and(n, a, b)) == Word.or(n, Word.not(n, a), Word.not(n, b)) : Word(n)} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend add_zero @n:Nat -> @a:Word(n) -> {Word.add(n, a, Word.zero(n)) == a : Word(n)} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend adc_nat @n:Nat -> @a:Word(n) -> @b:Word(n) -> @c:Bool -> {Nat.add(Word.to_nat(n, Word.adc(n, a, b, False{}, c)), 0xb13667d52aa56e002b4d09883d7fce3e/word.scale(0xb13667d52aa56e002b4d09883d7fce3e/word.carry(n, a, b, c), 0xb13667d52aa56e002b4d09883d7fce3e/word.pow2(n))) == Nat.add(Word.to_nat(n, a), Nat.add(Word.to_nat(n, b), 0xb13667d52aa56e002b4d09883d7fce3e/word.b2n(c))) : Nat} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend not_nat @n:Nat -> @w:Word(n) -> {1n+Nat.add(Word.to_nat(n, w), Word.to_nat(n, Word.not(n, w))) == 0xb13667d52aa56e002b4d09883d7fce3e/word.pow2(n) : Nat} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend to_nat_inj @n:Nat -> @a:Word(n) -> @b:Word(n) -> @h:{Word.to_nat(n, a) == Word.to_nat(n, b) : Nat} -> {a == b : Word(n)} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend adc_sub @n:Nat -> @a:Word(n) -> @b:Word(n) -> @c:Bool -> {Word.adc(n, a, Word.not(n, b), False{}, c) == Word.adc(n, a, b, True{}, c) : Word(n)} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend sub_nat @+n:Nat -> @+a:Word(n) -> @+b:Word(n) -> @+d:Nat -> @h:{Word.to_nat(n, a) == Nat.add(Word.to_nat(n, b), d) : Nat} -> {Word.to_nat(n, Word.sub(n, a, b)) == d : Nat} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend add_assoc @+n:Nat -> @+a:Word(n) -> @+b:Word(n) -> @+c:Word(n) -> {Word.add(n, a, Word.add(n, b, c)) == Word.add(n, Word.add(n, a, b), c) : Word(n)} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend add_exact @+n:Nat -> @+a:Word(n) -> @+b:Word(n) -> @+g:Nat -> @h:{1n+Nat.add(Nat.add(Word.to_nat(n, a), Word.to_nat(n, b)), g) == 0xb13667d52aa56e002b4d09883d7fce3e/word.pow2(n) : Nat} -> {Word.to_nat(n, Word.add(n, a, b)) == Nat.add(Word.to_nat(n, a), Word.to_nat(n, b)) : Nat} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend shl_put @n:Nat -> @+c:Bool -> @+w:Word(n) -> {Nat.add(Word.to_nat(n, Word.shl.put(n, c, w)), 0xb13667d52aa56e002b4d09883d7fce3e/word.scale(0xb13667d52aa56e002b4d09883d7fce3e/word.top(n, c, w), 0xb13667d52aa56e002b4d09883d7fce3e/word.pow2(n))) == Nat.add(0xb13667d52aa56e002b4d09883d7fce3e/word.b2n(c), Nat.double(Word.to_nat(n, w))) : Nat} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend shl_nat @n:Nat -> @w:Word(n) -> {Nat.add(Word.to_nat(n, Word.shl(n, w)), 0xb13667d52aa56e002b4d09883d7fce3e/word.scale(0xb13667d52aa56e002b4d09883d7fce3e/word.top(n, False{}, w), 0xb13667d52aa56e002b4d09883d7fce3e/word.pow2(n))) == Nat.double(Word.to_nat(n, w)) : Nat} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend shr_pad @n:Nat -> @w:Word(n) -> {Word.to_nat(1n+n, Word.shr.pad(n, w)) == Word.to_nat(n, w) : Nat} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend shr_nat @n:Nat -> @w:Word(n) -> {Nat.add(0xb13667d52aa56e002b4d09883d7fce3e/word.b2n(0xb13667d52aa56e002b4d09883d7fce3e/word.lsb(n, w)), Nat.double(Word.to_nat(n, Word.shr(n, w)))) == Word.to_nat(n, w) : Nat} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend cmp_nat @n:Nat -> @a:Word(n) -> @b:Word(n) -> {Word.cmp(n, a, b) == Nat.cmp(Word.to_nat(n, a), Word.to_nat(n, b)) : Cmp} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend u32_xor_comm @a:U32 -> @b:U32 -> {U32.xor(a, b) == U32.xor(b, a) : U32} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend u32_and_comm @a:U32 -> @b:U32 -> {U32.and(a, b) == U32.and(b, a) : U32} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend u32_or_comm @a:U32 -> @b:U32 -> {U32.or(a, b) == U32.or(b, a) : U32} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend u32_xor_assoc @a:U32 -> @b:U32 -> @c:U32 -> {U32.xor(a, U32.xor(b, c)) == U32.xor(U32.xor(a, b), c) : U32} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend u32_and_assoc @a:U32 -> @b:U32 -> @c:U32 -> {U32.and(a, U32.and(b, c)) == U32.and(U32.and(a, b), c) : U32} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend u32_or_assoc @a:U32 -> @b:U32 -> @c:U32 -> {U32.or(a, U32.or(b, c)) == U32.or(U32.or(a, b), c) : U32} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend u32_add_assoc @a:U32 -> @b:U32 -> @c:U32 -> {U32.add(a, U32.add(b, c)) == U32.add(U32.add(a, b), c) : U32} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend u32_add_zero @a:U32 -> {U32.add(a, 0) == a : U32} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend u32_xor_zero @a:U32 -> {U32.xor(a, 0) == a : U32} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend u32_xor_self @+a:U32 -> {U32.xor(a, a) == 0 : U32} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend u32_not_not @a:U32 -> {U32.not(U32.not(a)) == a : U32} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend u32_to_nat_inj @a:U32 -> @b:U32 -> @h:{U32.to_nat(a) == U32.to_nat(b) : Nat} -> {a == b : U32} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend u32_sub_nat @+a:U32 -> @+b:U32 -> @+d:Nat -> @h:{U32.to_nat(a) == Nat.add(U32.to_nat(b), d) : Nat} -> {U32.to_nat(U32.sub(a, b)) == d : Nat} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend u32_cmp_nat @a:U32 -> @b:U32 -> {U32.cmp(a, b) == Nat.cmp(U32.to_nat(a), U32.to_nat(b)) : Cmp} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend u32_lt_nat @+a:U32 -> @+b:U32 -> {U32.is_lt(a, b) == Nat.is_lt(U32.to_nat(a), U32.to_nat(b)) : Bool} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend u32_le_nat @+a:U32 -> @+b:U32 -> {U32.is_le(a, b) == Nat.is_le(U32.to_nat(a), U32.to_nat(b)) : Bool} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend mul_go_nat @+n:Nat -> @+m:Nat -> @+a:Word(m) -> @+b:Word(n) -> @+acc:Word(n) -> {Nat.add(Word.to_nat(n, Word.mul.go(n, m, a, b, acc)), Nat.mul(0xb13667d52aa56e002b4d09883d7fce3e/word.mulq(n, m, a, b, acc), 0xb13667d52aa56e002b4d09883d7fce3e/word.pow2(n))) == Nat.add(Word.to_nat(n, acc), Nat.mul(Word.to_nat(m, a), Word.to_nat(n, b))) : Nat} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend mul_nat @+n:Nat -> @+a:Word(n) -> @+b:Word(n) -> {Nat.add(Word.to_nat(n, Word.mul(n, a, b)), Nat.mul(0xb13667d52aa56e002b4d09883d7fce3e/word.mulq(n, n, a, b, Word.zero(n)), 0xb13667d52aa56e002b4d09883d7fce3e/word.pow2(n))) == Nat.mul(Word.to_nat(n, a), Word.to_nat(n, b)) : Nat} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend mul_exact @+n:Nat -> @+a:Word(n) -> @+b:Word(n) -> @+g:Nat -> @h:{1n+Nat.add(Nat.mul(Word.to_nat(n, a), Word.to_nat(n, b)), g) == 0xb13667d52aa56e002b4d09883d7fce3e/word.pow2(n) : Nat} -> {Word.to_nat(n, Word.mul(n, a, b)) == Nat.mul(Word.to_nat(n, a), Word.to_nat(n, b)) : Nat} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend mul_comm @+n:Nat -> @+a:Word(n) -> @+b:Word(n) -> {Word.mul(n, a, b) == Word.mul(n, b, a) : Word(n)} 0xb13667d52aa56e002b4d09883d7fce3e/LAWS.bend u32_mul_comm @a:U32 -> @b:U32 -> {U32.mul(a, b) == U32.mul(b, a) : U32} 0xc409b77d3230ca33374caf6b0993f0cb/BYTE_LAWS.bend list_right @+s:List<&2, U32> -> {List.append(&2, U32, s, []) == s : List<&2, U32>} 0xc409b77d3230ca33374caf6b0993f0cb/BYTE_LAWS.bend list_assoc @+a:List<&2, U32> -> @+b:List<&2, U32> -> @+c:List<&2, U32> -> {List.append(&2, U32, List.append(&2, U32, a, b), c) == List.append(&2, U32, a, List.append(&2, U32, b, c)) : List<&2, U32>} 0xc409b77d3230ca33374caf6b0993f0cb/BYTE_LAWS.bend flatten_join @+a:List<&2, List<&2, U32>> -> @+b:List<&2, List<&2, U32>> -> {0xc409b77d3230ca33374caf6b0993f0cb/byte_model.flatten(0xc409b77d3230ca33374caf6b0993f0cb/byte_model.join(a, b)) == List.append(&2, U32, 0xc409b77d3230ca33374caf6b0993f0cb/byte_model.flatten(a), 0xc409b77d3230ca33374caf6b0993f0cb/byte_model.flatten(b)) : List<&2, U32>} 0xc409b77d3230ca33374caf6b0993f0cb/BYTE_LAWS.bend emit_model @+t:0xc409b77d3230ca33374caf6b0993f0cb/bytes.Tree -> @+suffix:List<&2, U32> -> {0xc409b77d3230ca33374caf6b0993f0cb/bytes.emit(t, suffix) == List.append(&2, U32, 0xc409b77d3230ca33374caf6b0993f0cb/byte_model.flatten(0xc409b77d3230ca33374caf6b0993f0cb/byte_model.chunks(t)), suffix) : List<&2, U32>} 0xc409b77d3230ca33374caf6b0993f0cb/BYTE_LAWS.bend finish_model @+t:0xc409b77d3230ca33374caf6b0993f0cb/bytes.Tree -> @+cap:U32 -> @+n:U32 -> {0xc409b77d3230ca33374caf6b0993f0cb/bytes.finish(0xc409b77d3230ca33374caf6b0993f0cb/bytes.Buffer{cap, n, t}) == 0xc409b77d3230ca33374caf6b0993f0cb/byte_model.flatten(0xc409b77d3230ca33374caf6b0993f0cb/byte_model.chunks(t)) : List<&2, U32>} 0xc409b77d3230ca33374caf6b0993f0cb/BYTE_LAWS.bend empty {0xc409b77d3230ca33374caf6b0993f0cb/bytes.finish(0xc409b77d3230ca33374caf6b0993f0cb/bytes.empty(0)) == [] : List<&2, U32>} 0xc409b77d3230ca33374caf6b0993f0cb/BYTE_LAWS.bend content {0xc409b77d3230ca33374caf6b0993f0cb/byte_model.observe(0xc409b77d3230ca33374caf6b0993f0cb/bytes.append(0xc409b77d3230ca33374caf6b0993f0cb/bytes.empty(4), [0, 127, 128, 255])) == Done{([0, 127, 128, 255], 4)} : Result<&1, &1, 0xc409b77d3230ca33374caf6b0993f0cb/bytes.Error, Pair(List<&2, U32>, U32)>} 0xc409b77d3230ca33374caf6b0993f0cb/BYTE_LAWS.bend invalid {0xc409b77d3230ca33374caf6b0993f0cb/byte_model.observe(0xc409b77d3230ca33374caf6b0993f0cb/bytes.byte(0xc409b77d3230ca33374caf6b0993f0cb/bytes.empty(4), 256)) == Fail{0xc409b77d3230ca33374caf6b0993f0cb/bytes.InvalidByte{256}} : Result<&1, &1, 0xc409b77d3230ca33374caf6b0993f0cb/bytes.Error, Pair(List<&2, U32>, U32)>} 0xc409b77d3230ca33374caf6b0993f0cb/BYTE_LAWS.bend full {0xc409b77d3230ca33374caf6b0993f0cb/byte_model.observe(0xc409b77d3230ca33374caf6b0993f0cb/bytes.byte(0xc409b77d3230ca33374caf6b0993f0cb/bytes.empty(0), 0)) == Fail{0xc409b77d3230ca33374caf6b0993f0cb/bytes.Limit{}} : Result<&1, &1, 0xc409b77d3230ca33374caf6b0993f0cb/bytes.Error, Pair(List<&2, U32>, U32)>} 0xc409b77d3230ca33374caf6b0993f0cb/BYTE_LAWS.bend compose_content {0xc409b77d3230ca33374caf6b0993f0cb/byte_model.observe(0xc409b77d3230ca33374caf6b0993f0cb/bytes.compose(0xc409b77d3230ca33374caf6b0993f0cb/bytes.Buffer{4, 2, 0xc409b77d3230ca33374caf6b0993f0cb/bytes.Chunk{[0, 97]}}, 0xc409b77d3230ca33374caf6b0993f0cb/bytes.Buffer{2, 2, 0xc409b77d3230ca33374caf6b0993f0cb/bytes.Chunk{[255, 10]}})) == Done{([0, 97, 255, 10], 4)} : Result<&1, &1, 0xc409b77d3230ca33374caf6b0993f0cb/bytes.Error, Pair(List<&2, U32>, U32)>} 0xc409b77d3230ca33374caf6b0993f0cb/BYTE_LAWS.bend overflow {0xc409b77d3230ca33374caf6b0993f0cb/bytes.combine(U32.is_le(1, U32.sub(4294967295, 4294967295)), 4294967295, 4294967295, 1, 0xc409b77d3230ca33374caf6b0993f0cb/bytes.Empty{}, 0xc409b77d3230ca33374caf6b0993f0cb/bytes.Empty{}) == Fail{0xc409b77d3230ca33374caf6b0993f0cb/bytes.Limit{}} : Result<&1, &1, 0xc409b77d3230ca33374caf6b0993f0cb/bytes.Error, 0xc409b77d3230ca33374caf6b0993f0cb/bytes.Builder>} 0xc409b77d3230ca33374caf6b0993f0cb/LAWS.bend string_right @+s:String -> {String.append(s, "") == s : String} 0xc409b77d3230ca33374caf6b0993f0cb/LAWS.bend string_assoc @+a:String -> @+b:String -> @+c:String -> {String.append(String.append(a, b), c) == String.append(a, String.append(b, c)) : String} 0xc409b77d3230ca33374caf6b0993f0cb/LAWS.bend flatten_join @+a:List<&2, String> -> @+b:List<&2, String> -> {0xc409b77d3230ca33374caf6b0993f0cb/model.flatten(0xc409b77d3230ca33374caf6b0993f0cb/model.join(a, b)) == String.append(0xc409b77d3230ca33374caf6b0993f0cb/model.flatten(a), 0xc409b77d3230ca33374caf6b0993f0cb/model.flatten(b)) : String} 0xc409b77d3230ca33374caf6b0993f0cb/LAWS.bend emit_model @+t:0xc409b77d3230ca33374caf6b0993f0cb/main.Builder -> @+suffix:String -> {0xc409b77d3230ca33374caf6b0993f0cb/main.emit(t, suffix) == String.append(0xc409b77d3230ca33374caf6b0993f0cb/model.flatten(0xc409b77d3230ca33374caf6b0993f0cb/model.chunks(t)), suffix) : String} 0xc409b77d3230ca33374caf6b0993f0cb/LAWS.bend finish_model @+t:0xc409b77d3230ca33374caf6b0993f0cb/main.Builder -> {0xc409b77d3230ca33374caf6b0993f0cb/main.finish(t) == 0xc409b77d3230ca33374caf6b0993f0cb/model.flatten(0xc409b77d3230ca33374caf6b0993f0cb/model.chunks(t)) : String} 0xc409b77d3230ca33374caf6b0993f0cb/LAWS.bend empty {0xc409b77d3230ca33374caf6b0993f0cb/main.finish(0xc409b77d3230ca33374caf6b0993f0cb/main.empty) == "" : String} 0xc409b77d3230ca33374caf6b0993f0cb/LAWS.bend fragment @+s:String -> {0xc409b77d3230ca33374caf6b0993f0cb/main.finish(0xc409b77d3230ca33374caf6b0993f0cb/main.fragment(s)) == s : String} 0xc409b77d3230ca33374caf6b0993f0cb/LAWS.bend compose @+a:0xc409b77d3230ca33374caf6b0993f0cb/main.Builder -> @+b:0xc409b77d3230ca33374caf6b0993f0cb/main.Builder -> {0xc409b77d3230ca33374caf6b0993f0cb/main.finish(0xc409b77d3230ca33374caf6b0993f0cb/main.compose(a, b)) == String.append(0xc409b77d3230ca33374caf6b0993f0cb/main.finish(a), 0xc409b77d3230ca33374caf6b0993f0cb/main.finish(b)) : String} 0xc409b77d3230ca33374caf6b0993f0cb/LAWS.bend append @+a:0xc409b77d3230ca33374caf6b0993f0cb/main.Builder -> @+s:String -> {0xc409b77d3230ca33374caf6b0993f0cb/main.finish(0xc409b77d3230ca33374caf6b0993f0cb/main.append(a, s)) == String.append(0xc409b77d3230ca33374caf6b0993f0cb/main.finish(a), s) : String} 0xc409b77d3230ca33374caf6b0993f0cb/LAWS.bend character @+a:0xc409b77d3230ca33374caf6b0993f0cb/main.Builder -> @+c:Char -> {0xc409b77d3230ca33374caf6b0993f0cb/main.finish(0xc409b77d3230ca33374caf6b0993f0cb/main.character(a, c)) == String.append(0xc409b77d3230ca33374caf6b0993f0cb/main.finish(a), SCon{c, ""}) : String} 0xc409b77d3230ca33374caf6b0993f0cb/LAWS.bend left_identity @+a:0xc409b77d3230ca33374caf6b0993f0cb/main.Builder -> {0xc409b77d3230ca33374caf6b0993f0cb/main.finish(0xc409b77d3230ca33374caf6b0993f0cb/main.compose(0xc409b77d3230ca33374caf6b0993f0cb/main.empty, a)) == 0xc409b77d3230ca33374caf6b0993f0cb/main.finish(a) : String} 0xc409b77d3230ca33374caf6b0993f0cb/LAWS.bend right_identity @+a:0xc409b77d3230ca33374caf6b0993f0cb/main.Builder -> {0xc409b77d3230ca33374caf6b0993f0cb/main.finish(0xc409b77d3230ca33374caf6b0993f0cb/main.compose(a, 0xc409b77d3230ca33374caf6b0993f0cb/main.empty)) == 0xc409b77d3230ca33374caf6b0993f0cb/main.finish(a) : String} 0xc409b77d3230ca33374caf6b0993f0cb/LAWS.bend associativity @+a:0xc409b77d3230ca33374caf6b0993f0cb/main.Builder -> @+b:0xc409b77d3230ca33374caf6b0993f0cb/main.Builder -> @+c:0xc409b77d3230ca33374caf6b0993f0cb/main.Builder -> {0xc409b77d3230ca33374caf6b0993f0cb/main.finish(0xc409b77d3230ca33374caf6b0993f0cb/main.compose(0xc409b77d3230ca33374caf6b0993f0cb/main.compose(a, b), c)) == 0xc409b77d3230ca33374caf6b0993f0cb/main.finish(0xc409b77d3230ca33374caf6b0993f0cb/main.compose(a, 0xc409b77d3230ca33374caf6b0993f0cb/main.compose(b, c))) : String} 0xc409b77d3230ca33374caf6b0993f0cb/LAWS.bend empty_fragment @+a:0xc409b77d3230ca33374caf6b0993f0cb/main.Builder -> {0xc409b77d3230ca33374caf6b0993f0cb/main.finish(0xc409b77d3230ca33374caf6b0993f0cb/main.append(a, "")) == 0xc409b77d3230ca33374caf6b0993f0cb/main.finish(a) : String} 0xc409b77d3230ca33374caf6b0993f0cb/LAWS.bend snapshot @+a:0xc409b77d3230ca33374caf6b0993f0cb/main.Builder -> @+s:String -> {(0xc409b77d3230ca33374caf6b0993f0cb/main.finish(a), 0xc409b77d3230ca33374caf6b0993f0cb/main.finish(0xc409b77d3230ca33374caf6b0993f0cb/main.append(a, s))) == (0xc409b77d3230ca33374caf6b0993f0cb/model.flatten(0xc409b77d3230ca33374caf6b0993f0cb/model.chunks(a)), String.append(0xc409b77d3230ca33374caf6b0993f0cb/model.flatten(0xc409b77d3230ca33374caf6b0993f0cb/model.chunks(a)), s)) : Pair(String, String)} 0xc409b77d3230ca33374caf6b0993f0cb/LAWS.bend witness {0xc409b77d3230ca33374caf6b0993f0cb/main.finish(0xc409b77d3230ca33374caf6b0993f0cb/main.character(0xc409b77d3230ca33374caf6b0993f0cb/main.compose(0xc409b77d3230ca33374caf6b0993f0cb/main.append(0xc409b77d3230ca33374caf6b0993f0cb/main.fragment("λ"), ""), 0xc409b77d3230ca33374caf6b0993f0cb/main.fragment("🙂\r\n")), '\0')) == "λ🙂\r\n\0" : String} 0xc4f31b1cf377fad1ed5191443ddd1c20/domain/architecture/LAWS.bend first_key_is_system @+a:0xc4f31b1cf377fad1ed5191443ddd1c20/domain/architecture/type.Architecture -> {0xc4f31b1cf377fad1ed5191443ddd1c20/general/rose/ops.first(0xc4f31b1cf377fad1ed5191443ddd1c20/domain/architecture/ops.keys(a)) == 0xc4f31b1cf377fad1ed5191443ddd1c20/domain/architecture/ops.system_key(a) : String} 0xc4f31b1cf377fad1ed5191443ddd1c20/general/rose/LAWS.bend first_key_is_own @-N:Data -> @+r:0xc4f31b1cf377fad1ed5191443ddd1c20/general/rose/type.Rose -> {0xc4f31b1cf377fad1ed5191443ddd1c20/general/rose/ops.first(0xc4f31b1cf377fad1ed5191443ddd1c20/general/rose/ops.keys(N, [r])) == 0xc4f31b1cf377fad1ed5191443ddd1c20/general/rose/ops.key(N, r) : String} 0xc6ecb72f45a1b2f83318765698582f7f/LAWS.bend rgb_ctor {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb(10, 20, 30, 1.0) == 0xc6ecb72f45a1b2f83318765698582f7f/lib.Rgb{10, 20, 30, 1.0} : 0xc6ecb72f45a1b2f83318765698582f7f/lib.Rgb} 0xc6ecb72f45a1b2f83318765698582f7f/LAWS.bend hsl_ctor {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.hsl(120.0, 1.0, 0.5, 1.0) == 0xc6ecb72f45a1b2f83318765698582f7f/lib.Hsl{120.0, 1.0, 0.5, 1.0} : 0xc6ecb72f45a1b2f83318765698582f7f/lib.Hsl} 0xc6ecb72f45a1b2f83318765698582f7f/LAWS.bend range_ctor {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.range(0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb(0, 0, 0, 0.0), 0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb(1, 2, 3, 1.0)) == 0xc6ecb72f45a1b2f83318765698582f7f/lib.ColorRange{0xc6ecb72f45a1b2f83318765698582f7f/lib.Rgb{0, 0, 0, 0.0}, 0xc6ecb72f45a1b2f83318765698582f7f/lib.Rgb{1, 2, 3, 1.0}} : 0xc6ecb72f45a1b2f83318765698582f7f/lib.ColorRange} 0xc6ecb72f45a1b2f83318765698582f7f/LAWS.bend rgb_r_proj {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb_r(0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb(10, 20, 30, 1.0)) == 10 : U32} 0xc6ecb72f45a1b2f83318765698582f7f/LAWS.bend rgb_g_proj {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb_g(0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb(10, 20, 30, 1.0)) == 20 : U32} 0xc6ecb72f45a1b2f83318765698582f7f/LAWS.bend rgb_b_proj {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb_b(0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb(10, 20, 30, 1.0)) == 30 : U32} 0xc6ecb72f45a1b2f83318765698582f7f/LAWS.bend rgb_a_proj {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb_a(0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb(10, 20, 30, 0.5)) == 0.5 : F32} 0xc6ecb72f45a1b2f83318765698582f7f/LAWS.bend hsl_h_proj {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.hsl_h(0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.hsl(240.0, 0.25, 0.75, 1.0)) == 240.0 : F32} 0xc6ecb72f45a1b2f83318765698582f7f/LAWS.bend hsl_s_proj {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.hsl_s(0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.hsl(240.0, 0.25, 0.75, 1.0)) == 0.25 : F32} 0xc6ecb72f45a1b2f83318765698582f7f/LAWS.bend hsl_l_proj {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.hsl_l(0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.hsl(240.0, 0.25, 0.75, 1.0)) == 0.75 : F32} 0xc6ecb72f45a1b2f83318765698582f7f/LAWS.bend hsl_a_proj {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.hsl_a(0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.hsl(240.0, 0.25, 0.75, 0.25)) == 0.25 : F32} 0xc6ecb72f45a1b2f83318765698582f7f/LAWS.bend clamp_u8_low {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.clamp_u8(0) == 0 : U32} 0xc6ecb72f45a1b2f83318765698582f7f/LAWS.bend clamp_u8_mid {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.clamp_u8(128) == 128 : U32} 0xc6ecb72f45a1b2f83318765698582f7f/LAWS.bend clamp_u8_high {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.clamp_u8(255) == 255 : U32} 0xc6ecb72f45a1b2f83318765698582f7f/LAWS.bend clamp_u8_overflow {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.clamp_u8(300) == 255 : U32} 0xc6ecb72f45a1b2f83318765698582f7f/LAWS.bend clamp_u8_way_over {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.clamp_u8(1000) == 255 : U32} 0xc6ecb72f45a1b2f83318765698582f7f/LAWS.bend clamp_rgb_r_overflow {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb_r(0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.clamp_rgb(0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb(300, 10, 400, 1.0))) == 255 : U32} 0xc6ecb72f45a1b2f83318765698582f7f/LAWS.bend clamp_rgb_g_ok {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb_g(0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.clamp_rgb(0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb(300, 10, 400, 1.0))) == 10 : U32} 0xc6ecb72f45a1b2f83318765698582f7f/LAWS.bend clamp_rgb_b_overflow {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb_b(0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.clamp_rgb(0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb(300, 10, 400, 1.0))) == 255 : U32} 0xc6ecb72f45a1b2f83318765698582f7f/LAWS.bend rgba_string_red {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.to_rgba_string(0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb(255, 0, 0, 1.0)) == String.append("rgba(255,0,0,", String.append(F32.show(1.0), ")")) : String} 0xc6ecb72f45a1b2f83318765698582f7f/LAWS.bend rgba_string_black {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.to_rgba_string(0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb(0, 0, 0, 0.0)) == String.append("rgba(0,0,0,", String.append(F32.show(0.0), ")")) : String} 0xc6ecb72f45a1b2f83318765698582f7f/LAWS.bend rgba_string_custom {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.to_rgba_string(0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb(12, 34, 56, 0.5)) == String.append("rgba(12,34,56,", String.append(F32.show(0.5), ")")) : String} 0xc6ecb72f45a1b2f83318765698582f7f/LAWS.bend rgba_starts_with_prefix {String.starts_with(0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.to_rgba_string(0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb(255, 128, 64, 1.0)), "rgba(") == True{} : Bool} 0xc6ecb72f45a1b2f83318765698582f7f/LAWS.bend hsla_string_green {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.to_hsla_string(0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.hsl(120.0, 1.0, 0.5, 1.0)) == String.append("hsla(", String.append(F32.show(120.0), String.append(",", String.append(F32.show(1.0), String.append(",", String.append(F32.show(0.5), String.append(",", String.append(F32.show(1.0), ")")))))))) : String} 0xc6ecb72f45a1b2f83318765698582f7f/LAWS.bend hsla_string_zero {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.to_hsla_string(0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.hsl(0.0, 0.0, 0.0, 0.0)) == String.append("hsla(", String.append(F32.show(0.0), String.append(",", String.append(F32.show(0.0), String.append(",", String.append(F32.show(0.0), String.append(",", String.append(F32.show(0.0), ")")))))))) : String} 0xca47b110029aa12cfc4d84615cad4ec1/io.bend text.close @m:Pair(File, Result<&1, &1, Pair(U32, String), String>) -> IO(Read) 0xca47b110029aa12cfc4d84615cad4ec1/io.bend text.size @m:Pair(File, Result<&1, &1, Pair(U32, String), U32>) -> @limit:Maybe<&2, U32> -> IO(Read) 0xca47b110029aa12cfc4d84615cad4ec1/io.bend bytes.close @m:Pair(File, Result<&1, &1, Pair(U32, String), List<&2, U32>>) -> IO(List<&2, U32>) 0xca47b110029aa12cfc4d84615cad4ec1/io.bend bytes.size @m:Pair(File, Result<&1, &1, Pair(U32, String), U32>) -> IO(List<&2, U32>) 0xd2d968d969a26029a632a3347c989456/deque.bend Deque.to_list.new @-A:Data -> {Deque.to_list(&2, A, Deque.new(&2, A)) == [] : List<&2, A>} 0xd2d968d969a26029a632a3347c989456/deque.bend Deque.to_list.push_front @-A:Data -> @-x:A -> @d:Deque<&2, A> -> {Deque.to_list(&2, A, Deque.push_front(&2, A, x, d)) == x <> Deque.to_list(&2, A, d) : List<&2, A>} 0xd2d968d969a26029a632a3347c989456/deque.bend Deque.pop_front.push_front @-A:Data -> @-x:A -> @d:Deque<&2, A> -> {Deque.pop_front(&2, A, Deque.push_front(&2, A, x, d)) == Some{(x, d)} : Maybe<&1, Pair(A, Deque<&2, A>)>} 0xd2d968d969a26029a632a3347c989456/deque.bend Deque.pop_back.push_back @-A:Data -> @-x:A -> @d:Deque<&2, A> -> {Deque.pop_back(&2, A, Deque.push_back(&2, A, x, d)) == Some{(x, d)} : Maybe<&1, Pair(A, Deque<&2, A>)>} 0xd2d968d969a26029a632a3347c989456/deque.bend Deque.lemma.append_nil @-A:Data -> @xs:List<&2, A> -> {List.append(&2, A, xs, []) == xs : List<&2, A>} 0xd2d968d969a26029a632a3347c989456/deque.bend Deque.lemma.append_assoc @-A:Data -> @xs:List<&2, A> -> @-ys:List<&2, A> -> @-zs:List<&2, A> -> {List.append(&2, A, List.append(&2, A, xs, ys), zs) == List.append(&2, A, xs, List.append(&2, A, ys, zs)) : List<&2, A>} 0xd2d968d969a26029a632a3347c989456/deque.bend Deque.to_list.from_list @-A:Data -> @xs:List<&2, A> -> {Deque.to_list(&2, A, Deque.from_list(&2, A, xs)) == xs : List<&2, A>} 0xd2d968d969a26029a632a3347c989456/deque.bend Deque.lemma.reverse_go @-A:Data -> @xs:List<&2, A> -> @-acc:List<&2, A> -> {List.append(&2, A, List.reverse.go(&2, A, xs, []), acc) == List.reverse.go(&2, A, xs, acc) : List<&2, A>} 0xd2d968d969a26029a632a3347c989456/deque.bend Deque.to_list.push_back @-A:Data -> @-x:A -> @d:Deque<&2, A> -> {Deque.to_list(&2, A, Deque.push_back(&2, A, x, d)) == List.append(&2, A, Deque.to_list(&2, A, d), [x]) : List<&2, A>} 0xd2d968d969a26029a632a3347c989456/heap.bend Heap.pop.push_new @-x:U32 -> {Heap.pop(U32, U32.is_le, Heap.push(U32, U32.is_le, x, Heap.new(U32))) == Some{(x, Heap.new(U32))} : Maybe<&1, Pair(U32, Heap)>} 0xd2d968d969a26029a632a3347c989456/heap.bend Heap.size.push @-x:U32 -> @h:Heap -> {Heap.size(U32, Heap.push(U32, U32.is_le, x, h)) == 1n+Heap.size(U32, h) : Nat} 0xd395e827d4f2e55365bfb5173c04c4ee/lib.bend Parser @-A:Type -> Type 0xd5e9362591c1667c9894b781190e1ac9/int.bend Int.neg @a:Int -> Int 0xd5e9362591c1667c9894b781190e1ac9/int.bend Int.add @a:Int -> @b:Int -> Int 0xd5e9362591c1667c9894b781190e1ac9/int.bend Int.mul @a:Int -> @b:Int -> Int 0xd5e9362591c1667c9894b781190e1ac9/int.bend Int.sub @a:Int -> @b:Int -> Int 0xd5e9362591c1667c9894b781190e1ac9/int.bend Int.abs @a:Int -> Nat 0xd5e9362591c1667c9894b781190e1ac9/int.bend Int.Le @a:Int -> @b:Int -> Type 0xd5e9362591c1667c9894b781190e1ac9/int.bend t_add_1 {Int.add(Pos{3n}, NegS{4n}) == NegS{1n} : Int} 0xd5e9362591c1667c9894b781190e1ac9/int.bend t_add_2 {Int.add(NegS{0n}, Pos{1n}) == Pos{0n} : Int} 0xd5e9362591c1667c9894b781190e1ac9/int.bend t_mul_1 {Int.mul(NegS{1n}, NegS{2n}) == Pos{6n} : Int} 0xd5e9362591c1667c9894b781190e1ac9/int.bend t_mul_2 {Int.mul(Pos{3n}, NegS{0n}) == NegS{2n} : Int} 0xd5e9362591c1667c9894b781190e1ac9/int.bend t_sub_1 {Int.sub(Pos{0n}, Pos{5n}) == NegS{4n} : Int} 0xd5e9362591c1667c9894b781190e1ac9/int.bend t_abs_1 {Int.abs(NegS{6n}) == 7n : Nat} 0xd5e9362591c1667c9894b781190e1ac9/int.bend of_add @+a:Nat -> @+b:Nat -> {Int.add(Pos{a}, Pos{b}) == Pos{Nat.add(a, b)} : Int} 0xd5e9362591c1667c9894b781190e1ac9/int.bend of_mul @+a:Nat -> @+b:Nat -> {Int.mul(Pos{a}, Pos{b}) == Pos{Nat.mul(a, b)} : Int} 0xd5e9362591c1667c9894b781190e1ac9/int.bend sub_def @+a:Int -> @+b:Int -> {Int.sub(a, b) == Int.add(a, Int.neg(b)) : Int} 0xd5e9362591c1667c9894b781190e1ac9/int.bend add_neg @+a:Int -> {Int.add(a, Int.neg(a)) == Pos{0n} : Int} 0xd5e9362591c1667c9894b781190e1ac9/int.bend neg_neg @a:Int -> {Int.neg(Int.neg(a)) == a : Int} 0xd5e9362591c1667c9894b781190e1ac9/int.bend add_zero @a:Int -> {Int.add(a, Pos{0n}) == a : Int} 0xd5e9362591c1667c9894b781190e1ac9/int.bend add_comm @+a:Int -> @+b:Int -> {Int.add(a, b) == Int.add(b, a) : Int} 0xd5e9362591c1667c9894b781190e1ac9/int.bend add_assoc @+a:Int -> @+b:Int -> @+c:Int -> {Int.add(a, Int.add(b, c)) == Int.add(Int.add(a, b), c) : Int} 0xd5e9362591c1667c9894b781190e1ac9/int.bend mul_one @a:Int -> {Int.mul(a, Pos{1n}) == a : Int} 0xd5e9362591c1667c9894b781190e1ac9/int.bend mul_zero @a:Int -> {Int.mul(a, Pos{0n}) == Pos{0n} : Int} 0xd5e9362591c1667c9894b781190e1ac9/int.bend mul_comm @+a:Int -> @+b:Int -> {Int.mul(a, b) == Int.mul(b, a) : Int} 0xd5e9362591c1667c9894b781190e1ac9/int.bend mul_assoc @+a:Int -> @+b:Int -> @+c:Int -> {Int.mul(a, Int.mul(b, c)) == Int.mul(Int.mul(a, b), c) : Int} 0xd5e9362591c1667c9894b781190e1ac9/int.bend mul_add @+a:Int -> @+b:Int -> @+c:Int -> {Int.mul(a, Int.add(b, c)) == Int.add(Int.mul(a, b), Int.mul(a, c)) : Int} 0xd5e9362591c1667c9894b781190e1ac9/int.bend mul_eq_zero @+a:Int -> @+b:Int -> @e:{Int.mul(a, b) == Pos{0n} : Int} -> @na:(@_:{a == Pos{0n} : Int} -> Empty) -> {b == Pos{0n} : Int} 0xd5e9362591c1667c9894b781190e1ac9/int.bend le_refl @a:Int -> Int.Le(a, a) 0xd5e9362591c1667c9894b781190e1ac9/int.bend le_antisym @+a:Int -> @+b:Int -> @h1:Int.Le(a, b) -> @h2:Int.Le(b, a) -> {a == b : Int} 0xd5e9362591c1667c9894b781190e1ac9/int.bend le_trans @+a:Int -> @+b:Int -> @+c:Int -> @h1:Int.Le(a, b) -> @h2:Int.Le(b, c) -> Int.Le(a, c) 0xd5e9362591c1667c9894b781190e1ac9/int.bend le_add @+a:Int -> @+b:Int -> @+c:Int -> @h:Int.Le(a, b) -> Int.Le(Int.add(a, c), Int.add(b, c)) 0xd5e9362591c1667c9894b781190e1ac9/int.bend le_mul_nonneg @+a:Int -> @+b:Int -> @+n:Nat -> @h:Int.Le(a, b) -> Int.Le(Int.mul(a, Pos{n}), Int.mul(b, Pos{n})) 0xd5e9362591c1667c9894b781190e1ac9/int.bend le_neg @+a:Int -> @+b:Int -> @h:Int.Le(a, b) -> Int.Le(Int.neg(b), Int.neg(a)) 0xd5e9362591c1667c9894b781190e1ac9/int.bend pos_nonneg @n:Nat -> Int.Le(Pos{0n}, Pos{n}) 0xd684886d10b431b9dce6c3b2d1ef1980/LAWS.bend empty_contents @-T:Data -> {0xd684886d10b431b9dce6c3b2d1ef1980/observations.contents(T, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.new(T)) == [] : List<&1, T>} 0xd684886d10b431b9dce6c3b2d1ef1980/LAWS.bend singleton_get @-T:Data -> @x:T -> {0xd684886d10b431b9dce6c3b2d1ef1980/observations.result(T, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.get(T, 0xd684886d10b431b9dce6c3b2d1ef1980/observations.one(T, x), 0)) == Done{x} : Result<&1, &1, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Error, T>} 0xd684886d10b431b9dce6c3b2d1ef1980/LAWS.bend growth_order @-T:Data -> @a:T -> @b:T -> @c:T -> @d:T -> @e:T -> {0xd684886d10b431b9dce6c3b2d1ef1980/observations.contents(T, 0xd684886d10b431b9dce6c3b2d1ef1980/observations.five(T, a, b, c, d, e)) == [a, b, c, d, e] : List<&1, T>} 0xd684886d10b431b9dce6c3b2d1ef1980/LAWS.bend reserve_preserves @-T:Data -> @a:T -> @b:T -> @c:T -> {0xd684886d10b431b9dce6c3b2d1ef1980/observations.unit_contents(T, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.reserve(T, 0xd684886d10b431b9dce6c3b2d1ef1980/observations.three(T, a, b, c), 17)) == ([a, b, c], Done{Unit{}}) : Pair(List<&1, T>, Result<&1, &1, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Error, Unit>)} 0xd684886d10b431b9dce6c3b2d1ef1980/LAWS.bend set_preserves @-T:Data -> @a:T -> @b:T -> @c:T -> @x:T -> {0xd684886d10b431b9dce6c3b2d1ef1980/observations.unit_contents(T, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.set(T, 0xd684886d10b431b9dce6c3b2d1ef1980/observations.three(T, a, b, c), 1, x)) == ([a, x, c], Done{Unit{}}) : Pair(List<&1, T>, Result<&1, &1, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Error, Unit>)} 0xd684886d10b431b9dce6c3b2d1ef1980/LAWS.bend swap_old_and_preserves @-T:Data -> @a:T -> @b:T -> @c:T -> @x:T -> {0xd684886d10b431b9dce6c3b2d1ef1980/observations.pop_contents(T, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.swap(T, 0xd684886d10b431b9dce6c3b2d1ef1980/observations.three(T, a, b, c), 1, x)) == ([a, x, c], Done{b}) : Pair(List<&1, T>, Result<&1, &1, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Error, T>)} 0xd684886d10b431b9dce6c3b2d1ef1980/LAWS.bend push_pop_growth @-T:Data -> @a:T -> @b:T -> @x:T -> {0xd684886d10b431b9dce6c3b2d1ef1980/observations.pop_contents(T, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.pop(T, 0xd684886d10b431b9dce6c3b2d1ef1980/observations.three(T, a, b, x))) == ([a, b], Done{x}) : Pair(List<&1, T>, Result<&1, &1, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Error, T>)} 0xd684886d10b431b9dce6c3b2d1ef1980/LAWS.bend slice_order @-T:Data -> @a:T -> @b:T -> @c:T -> @d:T -> @e:T -> {0xd684886d10b431b9dce6c3b2d1ef1980/observations.slice_result(T, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.slice(T, 0xd684886d10b431b9dce6c3b2d1ef1980/observations.five(T, a, b, c, d, e), 1, 4)) == Done{[b, c, d]} : Result<&1, &1, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Error, List<&1, T>>} 0xd684886d10b431b9dce6c3b2d1ef1980/LAWS.bend logical_bounds @-T:Data -> @a:T -> @b:T -> @c:T -> @x:T -> {0xd684886d10b431b9dce6c3b2d1ef1980/observations.unit_contents(T, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.set(T, 0xd684886d10b431b9dce6c3b2d1ef1980/observations.three(T, a, b, c), 3, x)) == ([a, b, c], Fail{0xd684886d10b431b9dce6c3b2d1ef1980/main.Bounds{}}) : Pair(List<&1, T>, Result<&1, &1, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Error, Unit>)} 0xd684886d10b431b9dce6c3b2d1ef1980/LAWS.bend max_index @-T:Data -> @a:T -> {0xd684886d10b431b9dce6c3b2d1ef1980/observations.result(T, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.get(T, 0xd684886d10b431b9dce6c3b2d1ef1980/observations.one(T, a), 4294967295)) == Fail{0xd684886d10b431b9dce6c3b2d1ef1980/main.Bounds{}} : Result<&1, &1, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Error, T>} 0xd684886d10b431b9dce6c3b2d1ef1980/LAWS.bend zero_limit @-T:Data -> @x:T -> {0xd684886d10b431b9dce6c3b2d1ef1980/observations.unit_contents(T, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.push(T, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.bounded(T, 0), x)) == ([], Fail{0xd684886d10b431b9dce6c3b2d1ef1980/main.Limit{}}) : Pair(List<&1, T>, Result<&1, &1, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Error, Unit>)} 0xd684886d10b431b9dce6c3b2d1ef1980/LAWS.bend empty_pop @-T:Data -> {0xd684886d10b431b9dce6c3b2d1ef1980/observations.pop_contents(T, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.pop(T, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.new(T))) == ([], Fail{0xd684886d10b431b9dce6c3b2d1ef1980/main.Empty{}}) : Pair(List<&1, T>, Result<&1, &1, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Error, T>)} 0xd684886d10b431b9dce6c3b2d1ef1980/LAWS.bend empty_slice @-T:Data -> {0xd684886d10b431b9dce6c3b2d1ef1980/observations.slice_result(T, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.slice(T, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.new(T), 0, 0)) == Done{[]} : Result<&1, &1, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Error, List<&1, T>>} 0xd684886d10b431b9dce6c3b2d1ef1980/LAWS.bend reversed_slice @-T:Data -> @x:T -> {0xd684886d10b431b9dce6c3b2d1ef1980/observations.slice_result(T, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.slice(T, 0xd684886d10b431b9dce6c3b2d1ef1980/observations.one(T, x), 1, 0)) == Fail{0xd684886d10b431b9dce6c3b2d1ef1980/main.InvalidRange{}} : Result<&1, &1, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Error, List<&1, T>>} 0xd684886d10b431b9dce6c3b2d1ef1980/LAWS.bend maximum_reserve @-T:Data -> @x:T -> {0xd684886d10b431b9dce6c3b2d1ef1980/observations.unit_contents(T, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.reserve(T, 0xd684886d10b431b9dce6c3b2d1ef1980/observations.one(T, x), 4294967295)) == ([x], Fail{0xd684886d10b431b9dce6c3b2d1ef1980/main.Limit{}}) : Pair(List<&1, T>, Result<&1, &1, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Error, Unit>)} 0xd684886d10b431b9dce6c3b2d1ef1980/LAWS.bend initial_metadata {0xd684886d10b431b9dce6c3b2d1ef1980/observations.metadata(U32, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.length(U32, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.new(U32))) == 0 : U32} 0xd684886d10b431b9dce6c3b2d1ef1980/LAWS.bend initial_capacity {0xd684886d10b431b9dce6c3b2d1ef1980/observations.metadata(U32, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.capacity(U32, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.new(U32))) == 1 : U32} 0xd684886d10b431b9dce6c3b2d1ef1980/LAWS.bend rounded_capacity {0xd684886d10b431b9dce6c3b2d1ef1980/observations.metadata(U32, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.capacity(U32, 0xd684886d10b431b9dce6c3b2d1ef1980/observations.vector(U32, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.reserve(U32, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.new(U32), 17)))) == 32 : U32} 0xd684886d10b431b9dce6c3b2d1ef1980/LAWS.bend effective_limit {0xd684886d10b431b9dce6c3b2d1ef1980/observations.metadata(U32, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.limit(U32, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.bounded(U32, 4294967295))) == 16777216 : U32} 0xd684886d10b431b9dce6c3b2d1ef1980/LAWS.bend get_preserves @-T:Data -> @a:T -> @b:T -> @c:T -> {0xd684886d10b431b9dce6c3b2d1ef1980/observations.pop_contents(T, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.get(T, 0xd684886d10b431b9dce6c3b2d1ef1980/observations.three(T, a, b, c), 1)) == ([a, b, c], Done{b}) : Pair(List<&1, T>, Result<&1, &1, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Error, T>)} 0xd684886d10b431b9dce6c3b2d1ef1980/LAWS.bend set_then_get @-T:Data -> @a:T -> @b:T -> @c:T -> @x:T -> {0xd684886d10b431b9dce6c3b2d1ef1980/observations.result(T, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.get(T, 0xd684886d10b431b9dce6c3b2d1ef1980/observations.vector(T, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.set(T, 0xd684886d10b431b9dce6c3b2d1ef1980/observations.three(T, a, b, c), 1, x)), 1)) == Done{x} : Result<&1, &1, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Error, T>} 0xd684886d10b431b9dce6c3b2d1ef1980/LAWS.bend push_success @-T:Data -> @a:T -> @b:T -> @x:T -> {0xd684886d10b431b9dce6c3b2d1ef1980/observations.unit_contents(T, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.push(T, 0xd684886d10b431b9dce6c3b2d1ef1980/observations.two(T, a, b), x)) == ([a, b, x], Done{Unit{}}) : Pair(List<&1, T>, Result<&1, &1, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Error, Unit>)} 0xd684886d10b431b9dce6c3b2d1ef1980/LAWS.bend pop_length @-T:Data -> @a:T -> @b:T -> @x:T -> {0xd684886d10b431b9dce6c3b2d1ef1980/observations.metadata(T, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.length(T, 0xd684886d10b431b9dce6c3b2d1ef1980/observations.value_vector(T, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.pop(T, 0xd684886d10b431b9dce6c3b2d1ef1980/observations.three(T, a, b, x))))) == 2 : U32} 0xd684886d10b431b9dce6c3b2d1ef1980/LAWS.bend maximum_plan {0xd684886d10b431b9dce6c3b2d1ef1980/main.plan_step(24n, 1, 0n, 16777216, False{}) == (16777216, 24n) : Pair(U32, Nat)} 0xd684886d10b431b9dce6c3b2d1ef1980/LAWS.bend exact_limit_reserve {0xd684886d10b431b9dce6c3b2d1ef1980/observations.unit_result(U32, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.reserve(U32, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Vec.bounded(U32, 3), 3)) == Done{Unit{}} : Result<&1, &1, 0xd684886d10b431b9dce6c3b2d1ef1980/main.Error, Unit>} 0xd9193642e70279e288909ba354d1bb6a/LAWS.bend encode_empty {0xd9193642e70279e288909ba354d1bb6a/lib.Base64.encode([]) == "" : String} 0xd9193642e70279e288909ba354d1bb6a/LAWS.bend encode_one {0xd9193642e70279e288909ba354d1bb6a/lib.Base64.encode([102]) == "Zg==" : String} 0xd9193642e70279e288909ba354d1bb6a/LAWS.bend encode_two {0xd9193642e70279e288909ba354d1bb6a/lib.Base64.encode([102, 111]) == "Zm8=" : String} 0xd9193642e70279e288909ba354d1bb6a/LAWS.bend encode_three {0xd9193642e70279e288909ba354d1bb6a/lib.Base64.encode([102, 111, 111]) == "Zm9v" : String} 0xd9193642e70279e288909ba354d1bb6a/LAWS.bend encode_multiple {0xd9193642e70279e288909ba354d1bb6a/lib.Base64.encode([102, 111, 111, 98, 97, 114]) == "Zm9vYmFy" : String} 0xd9193642e70279e288909ba354d1bb6a/LAWS.bend encode_masks_u32 {0xd9193642e70279e288909ba354d1bb6a/lib.Base64.encode([256]) == "AA==" : String} 0xd9193642e70279e288909ba354d1bb6a/LAWS.bend decode_empty {0xd9193642e70279e288909ba354d1bb6a/lib.Base64.decode("") == Some{[]} : Maybe<&2, List<&2, U32>>} 0xd9193642e70279e288909ba354d1bb6a/LAWS.bend decode_one_pad {0xd9193642e70279e288909ba354d1bb6a/lib.Base64.decode("Zg==") == Some{[102]} : Maybe<&2, List<&2, U32>>} 0xd9193642e70279e288909ba354d1bb6a/LAWS.bend decode_two_pad {0xd9193642e70279e288909ba354d1bb6a/lib.Base64.decode("Zm8=") == Some{[102, 111]} : Maybe<&2, List<&2, U32>>} 0xd9193642e70279e288909ba354d1bb6a/LAWS.bend decode_full {0xd9193642e70279e288909ba354d1bb6a/lib.Base64.decode("Zm9v") == Some{[102, 111, 111]} : Maybe<&2, List<&2, U32>>} 0xd9193642e70279e288909ba354d1bb6a/LAWS.bend decode_multiple {0xd9193642e70279e288909ba354d1bb6a/lib.Base64.decode("Zm9vYmFy") == Some{[102, 111, 111, 98, 97, 114]} : Maybe<&2, List<&2, U32>>} 0xd9193642e70279e288909ba354d1bb6a/LAWS.bend roundtrip_one {0xd9193642e70279e288909ba354d1bb6a/lib.Base64.decode(0xd9193642e70279e288909ba354d1bb6a/lib.Base64.encode([102])) == Some{[102]} : Maybe<&2, List<&2, U32>>} 0xd9193642e70279e288909ba354d1bb6a/LAWS.bend roundtrip_two {0xd9193642e70279e288909ba354d1bb6a/lib.Base64.decode(0xd9193642e70279e288909ba354d1bb6a/lib.Base64.encode([102, 111])) == Some{[102, 111]} : Maybe<&2, List<&2, U32>>} 0xd9193642e70279e288909ba354d1bb6a/LAWS.bend roundtrip_three {0xd9193642e70279e288909ba354d1bb6a/lib.Base64.decode(0xd9193642e70279e288909ba354d1bb6a/lib.Base64.encode([102, 111, 111])) == Some{[102, 111, 111]} : Maybe<&2, List<&2, U32>>} 0xd9193642e70279e288909ba354d1bb6a/LAWS.bend reject_invalid_alphabet {0xd9193642e70279e288909ba354d1bb6a/lib.Base64.decode("not!") == None{} : Maybe<&2, List<&2, U32>>} 0xd9193642e70279e288909ba354d1bb6a/LAWS.bend reject_short_quartet {0xd9193642e70279e288909ba354d1bb6a/lib.Base64.decode("Zg=") == None{} : Maybe<&2, List<&2, U32>>} 0xd9193642e70279e288909ba354d1bb6a/LAWS.bend reject_early_padding {0xd9193642e70279e288909ba354d1bb6a/lib.Base64.decode("Z=g=") == None{} : Maybe<&2, List<&2, U32>>} 0xd9193642e70279e288909ba354d1bb6a/LAWS.bend reject_bad_padding_shape {0xd9193642e70279e288909ba354d1bb6a/lib.Base64.decode("Zg=A") == None{} : Maybe<&2, List<&2, U32>>} 0xd9193642e70279e288909ba354d1bb6a/LAWS.bend reject_noncanonical_one {0xd9193642e70279e288909ba354d1bb6a/lib.Base64.decode("Zh==") == None{} : Maybe<&2, List<&2, U32>>} 0xd9193642e70279e288909ba354d1bb6a/LAWS.bend reject_noncanonical_two {0xd9193642e70279e288909ba354d1bb6a/lib.Base64.decode("Zm/=") == None{} : Maybe<&2, List<&2, U32>>} 0xd9193642e70279e288909ba354d1bb6a/LAWS.bend reject_padding_before_tail {0xd9193642e70279e288909ba354d1bb6a/lib.Base64.decode("Zg==AAAA") == None{} : Maybe<&2, List<&2, U32>>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend octets_correct @+width:Nat -> @+n:Nat -> @+acc:List<&2, U32> -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.length_octets(width, n, acc) == List.append(&2, U32, 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.octets(width, n), acc) : List<&2, U32>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend length_correct @+n:Nat -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.bit_length(n) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.length_field(n) : List<&2, U32>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend nth_correct @xs:List<&2, U32> -> @n:Nat -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.get(xs, n) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.nth(xs, n) : U32} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend next_correct @+hs:List<&2, U32> -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.next_word(hs) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.recurrence(hs) : U32} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend extension_correct @+n:Nat -> @+hs:List<&2, U32> -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.expand(n, hs) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.extension(n, hs) : List<&2, U32>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend schedule_correct @+extra:Nat -> @+block:List<&2, U32> -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.schedule(extra, block) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.schedule(extra, block) : List<&2, U32>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend step_correct @s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @k:U32 -> @w:U32 -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.step(s, k, w) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.step(s, k, w) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend rounds_correct @+ks:List<&2, U32> -> @+ws:List<&2, U32> -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.rounds(ks, ws, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.rounds(ks, ws, s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend feedforward_correct @x:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @y:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.feedforward(x, y) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.feedforward(x, y) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend compression_correct @+ws:List<&2, U32> -> @+ks:List<&2, U32> -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.compress(ws, ks, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.compress(ws, ks, s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend expanded_rounds_correct @+n:Nat -> @+history:List<&2, U32> -> @+ks:List<&2, U32> -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.expanded_rounds(n, history, ks, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.rounds(ks, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.expand(n, history), s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend schedule_rounds_correct @+ws:List<&2, U32> -> @+extra:Nat -> @+history:List<&2, U32> -> @+ks:List<&2, U32> -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.schedule_rounds(ws, extra, history, ks, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.rounds(ks, List.append(&2, U32, ws, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.expand(extra, history)), s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend fused_compress_correct @+block:List<&2, U32> -> @+extra:Nat -> @+ks:List<&2, U32> -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.fused_compress(block, extra, ks, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.compress(0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.schedule(extra, block), ks, s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend fused_compress_slow_correct @+block:List<&2, U32> -> @+extra:Nat -> @+ks:List<&2, U32> -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.fused_compress_slow(block, extra, ks, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.compress(0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.schedule(extra, block), ks, s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend window_rounds_correct @+q:Nat -> @+a:U32 -> @+b:U32 -> @+c:U32 -> @+d:U32 -> @+e:U32 -> @+f:U32 -> @+g:U32 -> @+h:U32 -> @+i:U32 -> @+j:U32 -> @+k:U32 -> @+l:U32 -> @+m:U32 -> @+n:U32 -> @+o:U32 -> @+p:U32 -> @+rest:List<&2, U32> -> @+ks:List<&2, U32> -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p}, ks, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.expanded_rounds(q, a <> b <> c <> d <> e <> f <> g <> h <> i <> j <> k <> l <> m <> n <> o <> p <> rest, ks, s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend window_schedule_rounds_correct @+ws:List<&2, U32> -> @+extra:Nat -> @+a:U32 -> @+b:U32 -> @+c:U32 -> @+d:U32 -> @+e:U32 -> @+f:U32 -> @+g:U32 -> @+h:U32 -> @+i:U32 -> @+j:U32 -> @+k:U32 -> @+l:U32 -> @+m:U32 -> @+n:U32 -> @+o:U32 -> @+p:U32 -> @+rest:List<&2, U32> -> @+ks:List<&2, U32> -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_schedule_rounds(ws, extra, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p}, ks, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.schedule_rounds(ws, extra, a <> b <> c <> d <> e <> f <> g <> h <> i <> j <> k <> l <> m <> n <> o <> p <> rest, ks, s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend window_compress16_correct @+a:U32 -> @+b:U32 -> @+c:U32 -> @+d:U32 -> @+e:U32 -> @+f:U32 -> @+g:U32 -> @+h:U32 -> @+i:U32 -> @+j:U32 -> @+k:U32 -> @+l:U32 -> @+m:U32 -> @+n:U32 -> @+o:U32 -> @+p:U32 -> @+extra:Nat -> @+ks:List<&2, U32> -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_compress16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, extra, ks, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.fused_compress([a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p], extra, ks, s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend digest_correct @s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.digest(s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.digest(s) : List<&2, U32>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend block_bytes_correct @+bytes:List<&2, U32> -> @+extra:Nat -> @+ks:List<&2, U32> -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.block_bytes(bytes, extra, ks, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.blocks(0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.schedules(0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.words(bytes), extra), ks, s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend suffix_correct @+n:Nat -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.suffix(n) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.padding_suffix(n) : List<&2, U32>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend mod_quotient @+x:Nat -> @+m:Nat -> @+d:Nat -> @+e:Nat -> @+r:Nat -> {Pair.snd(Nat, Nat, Nat.divmod.go(x, m, d, r)) == Pair.snd(Nat, Nat, Nat.divmod.go(x, m, e, r)) : Nat} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend mod_shift @+x:Nat -> {Nat.mod(Nat.add(64n, x), 64n) == Nat.mod(x, 64n) : Nat} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend mod_tail @+x:Nat -> @+k:Nat -> {Nat.mod(Nat.add(x, mul64(k)), 64n) == Nat.mod(x, 64n) : Nat} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr64_correct @+q:Nat -> @+win:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.ShaWindow -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr64(q, win, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, win, [], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr63_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr63(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr62_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr62(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr61_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr61(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr60_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr60(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr59_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr59(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr58_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr58(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr57_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr57(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr56_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr56(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr55_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr55(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr54_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr54(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr53_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr53(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr52_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr52(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr51_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr51(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr50_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr50(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr49_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr49(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr48_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr48(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr47_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr47(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr46_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr46(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr45_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr45(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr44_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr44(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr43_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr43(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr42_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr42(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr41_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr41(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr40_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr40(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr39_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr39(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr38_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr38(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr37_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr37(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr36_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr36(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr35_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr35(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr34_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr34(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr33_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr33(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr32_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr32(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr31_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr31(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr30_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr30(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr29_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr29(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr28_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr28(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr27_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr27(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr26_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr26(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr25_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr25(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr24_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr24(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr23_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr23(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr22_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr22(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr21_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr21(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr20_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr20(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr19_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr19(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr18_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr18(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr17_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr17(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend kr16_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.kr16(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend fips16_correct @+a:U32 -> @+b:U32 -> @+c:U32 -> @+d:U32 -> @+e:U32 -> @+f:U32 -> @+g:U32 -> @+h:U32 -> @+i:U32 -> @+j:U32 -> @+k:U32 -> @+l:U32 -> @+m:U32 -> @+n:U32 -> @+o:U32 -> @+p:U32 -> @+q:Nat -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.fips_compress16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.window_compress16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.round_constants, s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend stream_correct @+bytes:List<&2, U32> -> @+k:Nat -> @+extra:Nat -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.stream(bytes, mul64(k), extra, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.block_bytes(List.append(&2, U32, bytes, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.suffix(Nat.add(List.length(&2, U32, bytes), mul64(k)))), extra, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.round_constants, s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/conformance.bend sha256_correct @+bytes:List<&2, U32> -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.sha256(bytes) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.hash(bytes, 48n, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/core.round_constants) : List<&2, U32>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/correctness.bend digest_octets_length @s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {List.length(&2, U32, 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.digest_octets(0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.digest(s))) == 32n : Nat} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/laws.bend constants_correct {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/sha256.constants == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.constants : List<&2, U32>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/laws.bend sha256_correct @+bytes:List<&2, U32> -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/sha256.sha256(bytes) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.sha256(bytes) : List<&2, U32>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/laws.bend digest_bytes_correct @+ws:List<&2, U32> -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/sha256.digest_bytes(ws) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.digest_octets(ws) : List<&2, U32>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/laws.bend sha256_bytes_correct @+bytes:List<&2, U32> -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/sha256.sha256_bytes(bytes) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.sha256_bytes(bytes) : List<&2, U32>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/laws.bend sha256_bytes_length @+bytes:List<&2, U32> -> {List.length(&2, U32, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/sha256.sha256_bytes(bytes)) == 32n : Nat} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/list_proofs.bend append_assoc @-A:Data -> @xs:List<&2, A> -> @ys:List<&2, A> -> @zs:List<&2, A> -> {List.append(&2, A, List.append(&2, A, xs, ys), zs) == List.append(&2, A, xs, List.append(&2, A, ys, zs)) : List<&2, A>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/list_proofs.bend reverse_twice @-A:Data -> @xs:List<&2, A> -> @acc:List<&2, A> -> @ys:List<&2, A> -> {List.reverse.go(&2, A, List.reverse.go(&2, A, xs, acc), ys) == List.reverse.go(&2, A, acc, List.append(&2, A, xs, ys)) : List<&2, A>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/list_proofs.bend reverse_append @-A:Data -> @xs:List<&2, A> -> @ys:List<&2, A> -> {List.reverse.go(&2, A, List.reverse(&2, A, xs), ys) == List.append(&2, A, xs, ys) : List<&2, A>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/list_proofs.bend add_succ @n:Nat -> @m:Nat -> {Nat.add(n, 1n+m) == 1n+Nat.add(n, m) : Nat} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/list_proofs.bend add_zero @n:Nat -> {Nat.add(n, 0n) == n : Nat} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/list_proofs.bend append_assoc_reverse @-A:Data -> @+xs:List<&2, A> -> @+ys:List<&2, A> -> @+zs:List<&2, A> -> {List.append(&2, A, xs, List.append(&2, A, ys, zs)) == List.append(&2, A, List.append(&2, A, xs, ys), zs) : List<&2, A>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/list_proofs.bend add_swap @+n:Nat -> @+k:Nat -> @+m:Nat -> {Nat.add(n, Nat.add(k, m)) == Nat.add(k, Nat.add(n, m)) : Nat} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/buffer_proof.bend correct @a:Array -> @+length:Nat -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/sha256.sha256(a, length) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/buffer.result(0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.hash(a, length)) : Maybe<&1, Array>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/buffer_proof.bend digest_size @s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {Pair.snd(Array, U32, Array.size(U32, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/buffer.digest(s))) == 8 : U32} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/buffer_proof.bend digest_words @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {words(0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/buffer.digest(s)) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.digest(s) : List<&2, U32>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/buffer_proof.bend observe_digest @+r:Maybe<&2, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State> -> {observe(0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/buffer.result(r)) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.digest_result(r) : Maybe<&2, List<&2, U32>>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/buffer_proof.bend full_reified @-a:Array -> @+length:Nat -> @view:Sigma<&2, &1, 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_array_proof.Tree, t => {a == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_array_proof.thaw(t) : Array}> -> {observe(0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/sha256.sha256(a, length)) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.sha256(a, length) : Maybe<&2, List<&2, U32>>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/buffer_proof.bend full_correct @a:Array -> @+length:Nat -> {observe(0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/sha256.sha256(a, length)) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.sha256(a, length) : Maybe<&2, List<&2, U32>>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend octets_correct @+width:Nat -> @+n:Nat -> @+acc:List<&2, U32> -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.length_octets(width, n, acc) == List.append(&2, U32, 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.octets(width, n), acc) : List<&2, U32>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend length_correct @+n:Nat -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.bit_length(n) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.length_field(n) : List<&2, U32>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend nth_correct @xs:List<&2, U32> -> @n:Nat -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.get(xs, n) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.nth(xs, n) : U32} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend next_correct @+hs:List<&2, U32> -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.next_word(hs) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.recurrence(hs) : U32} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend extension_correct @+n:Nat -> @+hs:List<&2, U32> -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.expand(n, hs) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.extension(n, hs) : List<&2, U32>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend schedule_correct @+extra:Nat -> @+block:List<&2, U32> -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.schedule(extra, block) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.schedule(extra, block) : List<&2, U32>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend step_correct @s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @k:U32 -> @w:U32 -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.step(s, k, w) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.step(s, k, w) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend rounds_correct @+ks:List<&2, U32> -> @+ws:List<&2, U32> -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.rounds(ks, ws, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.rounds(ks, ws, s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend feedforward_correct @x:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @y:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.feedforward(x, y) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.feedforward(x, y) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend compression_correct @+ws:List<&2, U32> -> @+ks:List<&2, U32> -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.compress(ws, ks, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.compress(ws, ks, s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend expanded_rounds_correct @+n:Nat -> @+history:List<&2, U32> -> @+ks:List<&2, U32> -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.expanded_rounds(n, history, ks, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.rounds(ks, 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.expand(n, history), s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend schedule_rounds_correct @+ws:List<&2, U32> -> @+extra:Nat -> @+history:List<&2, U32> -> @+ks:List<&2, U32> -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.schedule_rounds(ws, extra, history, ks, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.rounds(ks, List.append(&2, U32, ws, 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.expand(extra, history)), s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend fused_compress_correct @+block:List<&2, U32> -> @+extra:Nat -> @+ks:List<&2, U32> -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.fused_compress(block, extra, ks, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.compress(0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.schedule(extra, block), ks, s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend fused_compress_slow_correct @+block:List<&2, U32> -> @+extra:Nat -> @+ks:List<&2, U32> -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.fused_compress_slow(block, extra, ks, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.compress(0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.schedule(extra, block), ks, s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend window_rounds_correct @+q:Nat -> @+a:U32 -> @+b:U32 -> @+c:U32 -> @+d:U32 -> @+e:U32 -> @+f:U32 -> @+g:U32 -> @+h:U32 -> @+i:U32 -> @+j:U32 -> @+k:U32 -> @+l:U32 -> @+m:U32 -> @+n:U32 -> @+o:U32 -> @+p:U32 -> @+rest:List<&2, U32> -> @+ks:List<&2, U32> -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p}, ks, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.expanded_rounds(q, a <> b <> c <> d <> e <> f <> g <> h <> i <> j <> k <> l <> m <> n <> o <> p <> rest, ks, s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend window_schedule_rounds_correct @+ws:List<&2, U32> -> @+extra:Nat -> @+a:U32 -> @+b:U32 -> @+c:U32 -> @+d:U32 -> @+e:U32 -> @+f:U32 -> @+g:U32 -> @+h:U32 -> @+i:U32 -> @+j:U32 -> @+k:U32 -> @+l:U32 -> @+m:U32 -> @+n:U32 -> @+o:U32 -> @+p:U32 -> @+rest:List<&2, U32> -> @+ks:List<&2, U32> -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_schedule_rounds(ws, extra, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p}, ks, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.schedule_rounds(ws, extra, a <> b <> c <> d <> e <> f <> g <> h <> i <> j <> k <> l <> m <> n <> o <> p <> rest, ks, s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend window_compress16_correct @+a:U32 -> @+b:U32 -> @+c:U32 -> @+d:U32 -> @+e:U32 -> @+f:U32 -> @+g:U32 -> @+h:U32 -> @+i:U32 -> @+j:U32 -> @+k:U32 -> @+l:U32 -> @+m:U32 -> @+n:U32 -> @+o:U32 -> @+p:U32 -> @+extra:Nat -> @+ks:List<&2, U32> -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_compress16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, extra, ks, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.fused_compress([a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p], extra, ks, s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend digest_correct @s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.digest(s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.digest(s) : List<&2, U32>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend block_bytes_correct @+bytes:List<&2, U32> -> @+extra:Nat -> @+ks:List<&2, U32> -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.block_bytes(bytes, extra, ks, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.blocks(0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.schedules(0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.words(bytes), extra), ks, s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend suffix_correct @+n:Nat -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.suffix(n) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.padding_suffix(n) : List<&2, U32>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend mod_quotient @+x:Nat -> @+m:Nat -> @+d:Nat -> @+e:Nat -> @+r:Nat -> {Pair.snd(Nat, Nat, Nat.divmod.go(x, m, d, r)) == Pair.snd(Nat, Nat, Nat.divmod.go(x, m, e, r)) : Nat} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend mod_shift @+x:Nat -> {Nat.mod(Nat.add(64n, x), 64n) == Nat.mod(x, 64n) : Nat} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend mod_tail @+x:Nat -> @+k:Nat -> {Nat.mod(Nat.add(x, mul64(k)), 64n) == Nat.mod(x, 64n) : Nat} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr64_correct @+q:Nat -> @+win:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.ShaWindow -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr64(q, win, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, win, [], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr63_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr63(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr62_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr62(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr61_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr61(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr60_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr60(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr59_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr59(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr58_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr58(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr57_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr57(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr56_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr56(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr55_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr55(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr54_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr54(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr53_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr53(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr52_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr52(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr51_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr51(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr50_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr50(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr49_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr49(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr48_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr48(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr47_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr47(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr46_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr46(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr45_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr45(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr44_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr44(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr43_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr43(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr42_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr42(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr41_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr41(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr40_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr40(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr39_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr39(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr38_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr38(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr37_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr37(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr36_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr36(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr35_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr35(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr34_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr34(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr33_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr33(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr32_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr32(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr31_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr31(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr30_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr30(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr29_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr29(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr28_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr28(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr27_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr27(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr26_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr26(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr25_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr25(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr24_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr24(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr23_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr23(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr22_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr22(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr21_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr21(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr20_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr20(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr19_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr19(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr18_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr18(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr17_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr17(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend kr16_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.kr16(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend fips16_correct @+a:U32 -> @+b:U32 -> @+c:U32 -> @+d:U32 -> @+e:U32 -> @+f:U32 -> @+g:U32 -> @+h:U32 -> @+i:U32 -> @+j:U32 -> @+k:U32 -> @+l:U32 -> @+m:U32 -> @+n:U32 -> @+o:U32 -> @+p:U32 -> @+q:Nat -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.fips_compress16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.window_compress16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.round_constants, s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend stream_correct @+bytes:List<&2, U32> -> @+k:Nat -> @+extra:Nat -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.stream(bytes, mul64(k), extra, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.block_bytes(List.append(&2, U32, bytes, 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.suffix(Nat.add(List.length(&2, U32, bytes), mul64(k)))), extra, 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.round_constants, s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/conformance.bend sha256_correct @+bytes:List<&2, U32> -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.sha256(bytes) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.hash(bytes, 48n, 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/core_model.round_constants) : List<&2, U32>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/laws.bend constants_correct {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/legacy_model.constants == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.constants : List<&2, U32>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/laws.bend sha256_correct @+bytes:List<&2, U32> -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/legacy_model.sha256(bytes) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.sha256(bytes) : List<&2, U32>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/laws.bend digest_bytes_correct @+ws:List<&2, U32> -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/legacy_model.digest_bytes(ws) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.digest_octets(ws) : List<&2, U32>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/laws.bend sha256_bytes_correct @+bytes:List<&2, U32> -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/legacy_model.sha256_bytes(bytes) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.sha256_bytes(bytes) : List<&2, U32>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/laws.bend sha256_bytes_length @+bytes:List<&2, U32> -> {List.length(&2, U32, 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/legacy_model.sha256_bytes(bytes)) == 32n : Nat} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/laws.bend sha256_packed_correct @words:Array -> @+byte_length:Nat -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/legacy_model.sha256_packed(words, byte_length) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.sha256(words, byte_length) : Maybe<&2, List<&2, U32>>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/laws.bend sha256_array_correct @words:Array -> @+byte_length:Nat -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/sha256.sha256(words, byte_length) == 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/buffer.result(0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.hash(words, byte_length)) : Maybe<&1, Array>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_array_proof.bend reify @a:Array -> Sigma<&2, &1, Tree, t => {a == thaw(t) : Array}> 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_array_proof.bend reify_node @-l:Array -> @-r:Array -> @left:Sigma<&2, &1, Tree, t => {l == thaw(t) : Array}> -> @right:Sigma<&2, &1, Tree, t => {r == thaw(t) : Array}> -> Sigma<&2, &1, Tree, t => {ANode{l, r} == thaw(t) : Array}> 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend compress_correct @+a:U32 -> @+b:U32 -> @+c:U32 -> @+d:U32 -> @+e:U32 -> @+f:U32 -> @+g:U32 -> @+h:U32 -> @+i:U32 -> @+j:U32 -> @+k:U32 -> @+l:U32 -> @+m:U32 -> @+n:U32 -> @+o:U32 -> @+p:U32 -> @+extra:Nat -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.fips_compress16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, extra, s) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.compress([a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p], extra, s) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend read16_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.read16(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 0n, index, False{}, 0n, 0n, s, [w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend read15_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.read15(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 1n, index, False{}, 0n, 0n, s, [w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend read14_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.read14(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 2n, index, False{}, 0n, 0n, s, [w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend read13_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.read13(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 3n, index, False{}, 0n, 0n, s, [w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend read12_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.read12(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 4n, index, False{}, 0n, 0n, s, [w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend read11_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.read11(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 5n, index, False{}, 0n, 0n, s, [w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend read10_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.read10(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 6n, index, False{}, 0n, 0n, s, [w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend read9_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.read9(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 7n, index, False{}, 0n, 0n, s, [w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend read8_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.read8(extra, index, s, w0, w1, w2, w3, w4, w5, w6, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 8n, index, False{}, 0n, 0n, s, [w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend read7_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.read7(extra, index, s, w0, w1, w2, w3, w4, w5, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 9n, index, False{}, 0n, 0n, s, [w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend read6_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.read6(extra, index, s, w0, w1, w2, w3, w4, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 10n, index, False{}, 0n, 0n, s, [w4, w3, w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend read5_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.read5(extra, index, s, w0, w1, w2, w3, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 11n, index, False{}, 0n, 0n, s, [w3, w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend read4_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.read4(extra, index, s, w0, w1, w2, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 12n, index, False{}, 0n, 0n, s, [w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend read3_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.read3(extra, index, s, w0, w1, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 13n, index, False{}, 0n, 0n, s, [w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend read2_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+w0:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.read2(extra, index, s, w0, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 14n, index, False{}, 0n, 0n, s, [w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend read1_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.read1(extra, index, s, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 15n, index, False{}, 0n, 0n, s, [], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend partial_correct @+w:U32 -> @+delta:Nat -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.partial(w, delta) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.partial(w, delta) : U32} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend pad_choose_correct @+c:Cmp -> @+w:U32 -> @+delta:Nat -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad_choose(c, w, delta) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.pad_choose(c, w, delta) : U32} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend pad_word_correct @+w:U32 -> @+pos:Nat -> @+remain:Nat -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad_word(w, pos, remain) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.pad_word(w, pos, remain) : U32} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend tail_word_correct @+short:Bool -> @+w:U32 -> @+pos:Nat -> @+remain:Nat -> @+length:U32 -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.length_word(short, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad_word(w, pos, remain), length) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.length_word(short, 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.pad_word(w, pos, remain), length) : U32} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend padded_words_correct @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+remain:Nat -> @+total:Nat -> {[0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad_word(w0, 0n, remain), 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad_word(w1, 4n, remain), 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad_word(w2, 8n, remain), 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad_word(w3, 12n, remain), 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad_word(w4, 16n, remain), 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad_word(w5, 20n, remain), 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad_word(w6, 24n, remain), 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad_word(w7, 28n, remain), 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad_word(w8, 32n, remain), 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad_word(w9, 36n, remain), 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad_word(w10, 40n, remain), 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad_word(w11, 44n, remain), 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad_word(w12, 48n, remain), 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad_word(w13, 52n, remain), 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.length_word(Nat.is_lt(remain, 56n), 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad_word(w14, 56n, remain), 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.len_hi(total)), 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.length_word(Nat.is_lt(remain, 56n), 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad_word(w15, 60n, remain), 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/core.len_lo(total))] == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.padded_words([w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15], 0n, remain, total) : List<&2, U32>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend pad16_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad16(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 0n, index, True{}, remain, total, s, [w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend pad15_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad15(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 1n, index, True{}, remain, total, s, [w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend pad14_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad14(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 2n, index, True{}, remain, total, s, [w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend pad13_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad13(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 3n, index, True{}, remain, total, s, [w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend pad12_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad12(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 4n, index, True{}, remain, total, s, [w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend pad11_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad11(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 5n, index, True{}, remain, total, s, [w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend pad10_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad10(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 6n, index, True{}, remain, total, s, [w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend pad9_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad9(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 7n, index, True{}, remain, total, s, [w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend pad8_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad8(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 8n, index, True{}, remain, total, s, [w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend pad7_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad7(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 9n, index, True{}, remain, total, s, [w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend pad6_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad6(extra, index, s, remain, total, w0, w1, w2, w3, w4, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 10n, index, True{}, remain, total, s, [w4, w3, w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend pad5_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad5(extra, index, s, remain, total, w0, w1, w2, w3, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 11n, index, True{}, remain, total, s, [w3, w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend pad4_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad4(extra, index, s, remain, total, w0, w1, w2, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 12n, index, True{}, remain, total, s, [w2, w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend pad3_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad3(extra, index, s, remain, total, w0, w1, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 13n, index, True{}, remain, total, s, [w1, w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend pad2_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad2(extra, index, s, remain, total, w0, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 14n, index, True{}, remain, total, s, [w0], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend pad1_correct @+extra:Nat -> @+index:U32 -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.pad1(extra, index, s, remain, total, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.gather(extra, 15n, index, True{}, remain, total, s, [], pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend final_extra_correct @+extra:Nat -> @+more:Bool -> @+total:Nat -> @pair:Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.final_extra(extra, more, total, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.final_extra(extra, more, total, pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend blocks_correct @+extra:Nat -> @+n:Nat -> @+index:U32 -> @+remain:Nat -> @+total:Nat -> @pair:Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.blocks(extra, n, index, remain, total, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.blocks(extra, n, index, remain, total, pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend blocks_zero_reified @+extra:Nat -> @+index:U32 -> @+remain:Nat -> @+total:Nat -> @-a:Array -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @view:Sigma<&2, &1, 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_array_proof.Tree, t => {a == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_array_proof.thaw(t) : Array}> -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.blocks(extra, 0n, index, remain, total, (a, s)) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.blocks(extra, 0n, index, remain, total, (a, s)) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend blocks_step_reified @+p:Nat -> @+extra:Nat -> @+index:U32 -> @+remain:Nat -> @+total:Nat -> @-a:Array -> @+s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> @view:Sigma<&2, &1, 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_array_proof.Tree, t => {a == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_array_proof.thaw(t) : Array}> -> @recurse:(@pair:Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.blocks(extra, p, U32.add(index, 16), remain, total, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.blocks(extra, p, U32.add(index, 16), remain, total, pair) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)}) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.blocks(extra, 1n+p, index, remain, total, (a, s)) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.blocks(extra, 1n+p, index, remain, total, (a, s)) : Pair(Array, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State)} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend hash_unchecked_correct @a:Array -> @+length:Nat -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.hash_unchecked(a, length) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.hash_unchecked(a, length) : 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend checked_correct @+valid:Bool -> @a:Array -> @+length:Nat -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.checked(valid, a, length) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.checked(valid, a, length) : Maybe<&2, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend sized_correct @+length:Nat -> @pair:Pair(Array, U32) -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.sized(length, pair) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.sized(length, pair) : Maybe<&2, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend hash_correct @a:Array -> @+length:Nat -> {0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/packed/packed.hash(a, length) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.hash(a, length) : Maybe<&2, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend digest_result_correct @+r:Maybe<&2, 0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State> -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/legacy_model.packed_digest(r) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.digest_result(r) : Maybe<&2, List<&2, U32>>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend sha256_correct @a:Array -> @+length:Nat -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/legacy_model.sha256_packed(a, length) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.sha256(a, length) : Maybe<&2, List<&2, U32>>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_proof.bend sha256_reified @-a:Array -> @+length:Nat -> @view:Sigma<&2, &1, 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_array_proof.Tree, t => {a == 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/packed_array_proof.thaw(t) : Array}> -> {0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/legacy_model.sha256_packed(a, length) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha/packed.sha256(a, length) : Maybe<&2, List<&2, U32>>} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/packed/proof.bend digest_octets_length @s:0xd9a2fae439ac7ff9e21e0853948f94fe/src/crypto/sha/state.State -> {List.length(&2, U32, 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.digest_octets(0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.digest(s))) == 32n : Nat} 0xd9a2fae439ac7ff9e21e0853948f94fe/proofs/crypto/sha/padding.bend zeros_correct @r:Nat -> {Nat.mod(Nat.sub(119n, r), 64n) == 0xd9a2fae439ac7ff9e21e0853948f94fe/spec/crypto/sha.zero_count(r) : Nat} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend count_below_nil @qp:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @c2:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/topology.count_below(empty_atoms, qp, c2) == 0n : Nat} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend has_close_nil @qp:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @min2:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/topology.has_close(empty_atoms, qp, min2) == False{} : Bool} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend sum_dist2_nil @qp:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> {0xdf198d67659100c90a58ecd6b01d034d/topology.sum_dist2(empty_atoms, qp) == 0.0 : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend contacts_between_nil @ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @c2:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/topology.contacts_between(empty_atoms, ys, c2) == 0n : Nat} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend min_dist2_nil @qp:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> {0xdf198d67659100c90a58ecd6b01d034d/topology.min_dist2_to(empty_atoms, qp) == None{} : Maybe<&2, F32>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend complex_atoms_nil {0xdf198d67659100c90a58ecd6b01d034d/protein.Complex.num_atoms(empty_cx) == 0n : Nat} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend lj_nil @eps:F32 -> @sig2:F32 -> @c2:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/force.lj_total(empty_atoms, empty_atoms, eps, sig2, c2) == 0.0 : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend rmsd_nil {0xdf198d67659100c90a58ecd6b01d034d/rmsd.rmsd(empty_atoms, empty_atoms) == 0.0 : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend sasa_nil @rad:F32 -> @rc2:F32 -> @area_pt:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/sasa.sasa_all(empty_atoms, 0xdf198d67659100c90a58ecd6b01d034d/sasa.sasa_offsets, rad, empty_atoms, rc2, area_pt) == [] : List<&2, F32>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend sd_fuel0 @xs:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @eps:F32 -> @sig2:F32 -> @c2:F32 -> @dt:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/force.minimize(0n, xs, eps, sig2, c2, dt) == xs : List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend count_cons @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @qp:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @c2:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/topology.count_below(h <> t, qp, c2) == Nat.add(0xdf198d67659100c90a58ecd6b01d034d/topology.count_below(t, qp, c2), 0xdf198d67659100c90a58ecd6b01d034d/topology.head_hit_nat(h, qp, c2)) : Nat} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend contacts_cons @x:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @xt:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @c2:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/topology.contacts_between(x <> xt, ys, c2) == Nat.add(0xdf198d67659100c90a58ecd6b01d034d/topology.contacts_between(xt, ys, c2), 0xdf198d67659100c90a58ecd6b01d034d/topology.contacts_of_head(x, ys, c2)) : Nat} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend sumd2_count_cons @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @qp:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> {0xdf198d67659100c90a58ecd6b01d034d/topology.sumd2_count(h <> t, qp) == 0xdf198d67659100c90a58ecd6b01d034d/topology.sumd2_extend(0xdf198d67659100c90a58ecd6b01d034d/topology.head_dist2(h, qp), 0xdf198d67659100c90a58ecd6b01d034d/topology.sumd2_count(t, qp)) : Pair(F32, Nat)} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend coord_cons @x:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @xt:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @c2:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/topology.coord_counts(x <> xt, ys, c2) == 0xdf198d67659100c90a58ecd6b01d034d/topology.contacts_of_head(x, ys, c2) <> 0xdf198d67659100c90a58ecd6b01d034d/topology.coord_counts(xt, ys, c2) : List<&2, Nat>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend min_dist2_cons @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @qp:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> {0xdf198d67659100c90a58ecd6b01d034d/topology.min_dist2_to(h <> t, qp) == 0xdf198d67659100c90a58ecd6b01d034d/topology.min_cons(h, 0xdf198d67659100c90a58ecd6b01d034d/topology.min_dist2_to(t, qp), qp) : Maybe<&2, F32>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend min_link2_cons @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> {0xdf198d67659100c90a58ecd6b01d034d/topology.min_link2(h <> t, ys) == 0xdf198d67659100c90a58ecd6b01d034d/topology.min_maybe(0xdf198d67659100c90a58ecd6b01d034d/topology.min_link2(t, ys), 0xdf198d67659100c90a58ecd6b01d034d/topology.head_link(h, ys)) : Maybe<&2, F32>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend lj_row_cons @pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @eps:F32 -> @sig2:F32 -> @c2:F32 -> @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> {0xdf198d67659100c90a58ecd6b01d034d/force.lj_row(pi, eps, sig2, c2, h <> t) == F32.add(0xdf198d67659100c90a58ecd6b01d034d/force.lj_row(pi, eps, sig2, c2, t), 0xdf198d67659100c90a58ecd6b01d034d/force.lj_head(pi, eps, sig2, c2, h)) : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend lj_total_cons @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @eps:F32 -> @sig2:F32 -> @c2:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/force.lj_total(h <> t, ys, eps, sig2, c2) == F32.add(0xdf198d67659100c90a58ecd6b01d034d/force.lj_total(t, ys, eps, sig2, c2), 0xdf198d67659100c90a58ecd6b01d034d/force.lj_self_atom(h, ys, eps, sig2, c2)) : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend coul_row_cons @pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @qi:F32 -> @ke:F32 -> @c2:F32 -> @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @qh:F32 -> @qt:List<&2, F32> -> {0xdf198d67659100c90a58ecd6b01d034d/force.coul_row(pi, qi, ke, c2, h <> t, qh <> qt) == F32.add(0xdf198d67659100c90a58ecd6b01d034d/force.coul_row(pi, qi, ke, c2, t, qt), 0xdf198d67659100c90a58ecd6b01d034d/force.coul_head(pi, qi, ke, c2, h, qh)) : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend coul_total_cons @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @qh:F32 -> @qt:List<&2, F32> -> @ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @qs_e:List<&2, F32> -> @ke:F32 -> @c2:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/force.coul_total(h <> t, qh <> qt, ys, qs_e, ke, c2) == F32.add(0xdf198d67659100c90a58ecd6b01d034d/force.coul_total(t, qt, ys, qs_e, ke, c2), 0xdf198d67659100c90a58ecd6b01d034d/force.coul_self(h, qh, ys, qs_e, ke, c2)) : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend sd_sweep_cons @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @f:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @ft:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3> -> @dt:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/force.sd_sweep(h <> t, f <> ft, dt) == 0xdf198d67659100c90a58ecd6b01d034d/force.sd_move(h, f, dt) <> 0xdf198d67659100c90a58ecd6b01d034d/force.sd_sweep(t, ft, dt) : List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend pair_sumd2_cons @x:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @xt:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @y:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @yt:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> {0xdf198d67659100c90a58ecd6b01d034d/rmsd.pair_sumd2(x <> xt, y <> yt) == 0xdf198d67659100c90a58ecd6b01d034d/rmsd.pair_head(x, y, 0xdf198d67659100c90a58ecd6b01d034d/rmsd.pair_sumd2(xt, yt)) : Pair(F32, Nat)} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend rmsd_to_all_cons @q:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @h:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @t:List<&2, List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom>> -> {0xdf198d67659100c90a58ecd6b01d034d/rmsd.rmsd_to_all(q, h <> t) == 0xdf198d67659100c90a58ecd6b01d034d/rmsd.rmsd_against(q, h) <> 0xdf198d67659100c90a58ecd6b01d034d/rmsd.rmsd_to_all(q, t) : List<&2, F32>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend count_single @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @qp:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @c2:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/topology.count_below([h], qp, c2) == 0xdf198d67659100c90a58ecd6b01d034d/topology.head_hit_nat(h, qp, c2) : Nat} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend has_close_single @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @qp:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @min2:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/topology.has_close([h], qp, min2) == 0xdf198d67659100c90a58ecd6b01d034d/topology.head_is_close(h, qp, min2) : Bool} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend min_single @s:U32 -> @e:U32 -> @x:F32 -> @y:F32 -> @z:F32 -> @qx:F32 -> @qy:F32 -> @qz:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/topology.min_dist2_to([0xdf198d67659100c90a58ecd6b01d034d/protein.Atom{s, e, 0xdf198d67659100c90a58ecd6b01d034d/geom.V3{x, y, z}}], 0xdf198d67659100c90a58ecd6b01d034d/geom.V3{qx, qy, qz}) == Some{0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3.dist2(0xdf198d67659100c90a58ecd6b01d034d/geom.V3{x, y, z}, 0xdf198d67659100c90a58ecd6b01d034d/geom.V3{qx, qy, qz})} : Maybe<&2, F32>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend rg_about_nil @qp:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> {0xdf198d67659100c90a58ecd6b01d034d/topology.rg_about(empty_atoms, qp) == 0.0 : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend rmsd_single @s:U32 -> @e:U32 -> @x:F32 -> @y:F32 -> @z:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/rmsd.rmsd([0xdf198d67659100c90a58ecd6b01d034d/protein.Atom{s, e, 0xdf198d67659100c90a58ecd6b01d034d/geom.V3{x, y, z}}], [0xdf198d67659100c90a58ecd6b01d034d/protein.Atom{s, e, 0xdf198d67659100c90a58ecd6b01d034d/geom.V3{x, y, z}}]) == F32.sqrt(F32.div(F32.add(0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3.dist2(0xdf198d67659100c90a58ecd6b01d034d/geom.V3{x, y, z}, 0xdf198d67659100c90a58ecd6b01d034d/geom.V3{x, y, z}), 0.0), F32.from_nat(1n))) : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend rng_next_0 {0xdf198d67659100c90a58ecd6b01d034d/rng.rng_next(0) == 1684164658 : U32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend rng_next_1 {0xdf198d67659100c90a58ecd6b01d034d/rng.rng_next(1) == 1580013426 : U32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend sasa_single {0xdf198d67659100c90a58ecd6b01d034d/sasa.sasa_of([0xdf198d67659100c90a58ecd6b01d034d/protein.Atom{1, 6, 0xdf198d67659100c90a58ecd6b01d034d/geom.V3{0.0, 0.0, 0.0}}], 2.0, 16.0, 1.0) == [F32.mul(1.0, F32.from_nat(6n))] : List<&2, F32>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend pair_trunc_right @x:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @xt:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> {0xdf198d67659100c90a58ecd6b01d034d/rmsd.pair_sumd2(x <> xt, empty_atoms) == (0.0, 0n) : Pair(F32, Nat)} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend coul_trunc_charges @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @qs:List<&2, F32> -> @ke:F32 -> @c2:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/force.coul_total(h <> t, [], ys, qs, ke, c2) == 0.0 : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend sd_trunc_forces @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @dt:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/force.sd_sweep(h <> t, [], dt) == h <> t : List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend contacts_nil_right @xs:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @c2:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/topology.contacts_between(xs, empty_atoms, c2) == 0n : Nat} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend min_link2_nil_right @xs:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> {0xdf198d67659100c90a58ecd6b01d034d/topology.min_link2(xs, empty_atoms) == None{} : Maybe<&2, F32>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend rmsd_checked_some @x:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @y:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> {0xdf198d67659100c90a58ecd6b01d034d/rmsd.rmsd_checked([x], [y]) == Some{0xdf198d67659100c90a58ecd6b01d034d/rmsd.rmsd([x], [y])} : Maybe<&2, F32>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend rmsd_checked_none @x:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> {0xdf198d67659100c90a58ecd6b01d034d/rmsd.rmsd_checked([x], empty_atoms) == None{} : Maybe<&2, F32>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend append_atoms_assoc @xs:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @zs:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> {0xdf198d67659100c90a58ecd6b01d034d/protein.append_atoms(0xdf198d67659100c90a58ecd6b01d034d/protein.append_atoms(xs, ys), zs) == 0xdf198d67659100c90a58ecd6b01d034d/protein.append_atoms(xs, 0xdf198d67659100c90a58ecd6b01d034d/protein.append_atoms(ys, zs)) : List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend flatten_residues_append @xs:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Residue> -> @ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Residue> -> {0xdf198d67659100c90a58ecd6b01d034d/protein.flatten_residues(0xdf198d67659100c90a58ecd6b01d034d/protein.append_residues(xs, ys)) == 0xdf198d67659100c90a58ecd6b01d034d/protein.append_atoms(0xdf198d67659100c90a58ecd6b01d034d/protein.flatten_residues(xs), 0xdf198d67659100c90a58ecd6b01d034d/protein.flatten_residues(ys)) : List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend add_zero_right @b:Nat -> {Nat.add(b, 0n) == b : Nat} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend add_succ_right @b:Nat -> @a:Nat -> {Nat.add(b, 1n+a) == 1n+Nat.add(b, a) : Nat} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend add_comm @a:Nat -> @b:Nat -> {Nat.add(a, b) == Nat.add(b, a) : Nat} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend count_atoms_append @xs:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> {0xdf198d67659100c90a58ecd6b01d034d/protein.count_atoms(0xdf198d67659100c90a58ecd6b01d034d/protein.append_atoms(xs, ys)) == Nat.add(0xdf198d67659100c90a58ecd6b01d034d/protein.count_atoms(xs), 0xdf198d67659100c90a58ecd6b01d034d/protein.count_atoms(ys)) : Nat} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend count_flatten_eq @rs:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Residue> -> {0xdf198d67659100c90a58ecd6b01d034d/protein.count_atoms(0xdf198d67659100c90a58ecd6b01d034d/protein.flatten_residues(rs)) == 0xdf198d67659100c90a58ecd6b01d034d/protein.count_atoms_in(rs) : Nat} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend complex_flatten_eq @chains:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Chain> -> {0xdf198d67659100c90a58ecd6b01d034d/protein.Complex.num_atoms(0xdf198d67659100c90a58ecd6b01d034d/protein.Complex{chains}) == 0xdf198d67659100c90a58ecd6b01d034d/protein.count_atoms(0xdf198d67659100c90a58ecd6b01d034d/protein.Complex.flatten(0xdf198d67659100c90a58ecd6b01d034d/protein.Complex{chains})) : Nat} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend pow10_3 {0xdf198d67659100c90a58ecd6b01d034d/pdb.pow10(3n) == 1000 : U32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend elem_iron {0xdf198d67659100c90a58ecd6b01d034d/pdb.elem_no("FE") == 26 : U32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend elem_carbon {0xdf198d67659100c90a58ecd6b01d034d/pdb.elem_1('C') == 6 : U32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend atom_line_yes {0xdf198d67659100c90a58ecd6b01d034d/pdb.is_atom_line("ATOM 1 N ALA A 1") == True{} : Bool} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend atom_line_no {0xdf198d67659100c90a58ecd6b01d034d/pdb.is_atom_line("HETATM 9999 O HOH A 101") == False{} : Bool} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend atom_lines_nil {0xdf198d67659100c90a58ecd6b01d034d/pdb.atom_lines([]) == [] : List<&2, String>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend atom_lines_keep {0xdf198d67659100c90a58ecd6b01d034d/pdb.atom_lines(["ATOM 1 N", "TER", "ENDMDL", "ATOM 2 CA"]) == ["ATOM 1 N"] : List<&2, String>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend parse_f32_one {0xdf198d67659100c90a58ecd6b01d034d/pdb.parse_f32("12.5") == Some{F32.add(U32.to_f32(12), F32.div(U32.to_f32(5), U32.to_f32(10)))} : Maybe<&2, F32>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend parse_f32_neg {0xdf198d67659100c90a58ecd6b01d034d/pdb.parse_f32("-3.25") == Some{F32.sub(0.0, F32.add(U32.to_f32(3), F32.div(U32.to_f32(25), U32.to_f32(100))))} : Maybe<&2, F32>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend parse_f32_bad {0xdf198d67659100c90a58ecd6b01d034d/pdb.parse_f32("abc") == None{} : Maybe<&2, F32>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend pdb_num_atoms {0xdf198d67659100c90a58ecd6b01d034d/protein.Complex.num_atoms(0xdf198d67659100c90a58ecd6b01d034d/pdb.complex_of(0xdf198d67659100c90a58ecd6b01d034d/pdb.parse_pdb(0xdf198d67659100c90a58ecd6b01d034d/pdb.demo_text))) == 2n : Nat} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend pdb_num_residues {0xdf198d67659100c90a58ecd6b01d034d/protein.Complex.num_residues(0xdf198d67659100c90a58ecd6b01d034d/pdb.complex_of(0xdf198d67659100c90a58ecd6b01d034d/pdb.parse_pdb(0xdf198d67659100c90a58ecd6b01d034d/pdb.demo_text))) == 1n : Nat} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend pdb_num_chains {0xdf198d67659100c90a58ecd6b01d034d/protein.Complex.num_chains(0xdf198d67659100c90a58ecd6b01d034d/pdb.complex_of(0xdf198d67659100c90a58ecd6b01d034d/pdb.parse_pdb(0xdf198d67659100c90a58ecd6b01d034d/pdb.demo_text))) == 1n : Nat} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend pdb_skipped_0 {0xdf198d67659100c90a58ecd6b01d034d/pdb.skipped_of(0xdf198d67659100c90a58ecd6b01d034d/pdb.parse_pdb(0xdf198d67659100c90a58ecd6b01d034d/pdb.demo_text)) == 0n : Nat} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend pdb_skipped_1 {0xdf198d67659100c90a58ecd6b01d034d/pdb.skipped_of(0xdf198d67659100c90a58ecd6b01d034d/pdb.parse_pdb(0xdf198d67659100c90a58ecd6b01d034d/pdb.demo_bad_text)) == 1n : Nat} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend pdb_bad_atoms {0xdf198d67659100c90a58ecd6b01d034d/protein.Complex.num_atoms(0xdf198d67659100c90a58ecd6b01d034d/pdb.complex_of(0xdf198d67659100c90a58ecd6b01d034d/pdb.parse_pdb(0xdf198d67659100c90a58ecd6b01d034d/pdb.demo_bad_text))) == 1n : Nat} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend pdb_first_elem {0xdf198d67659100c90a58ecd6b01d034d/pdb.first_elem(0xdf198d67659100c90a58ecd6b01d034d/pdb.complex_of(0xdf198d67659100c90a58ecd6b01d034d/pdb.parse_pdb(0xdf198d67659100c90a58ecd6b01d034d/pdb.demo_text))) == Some{7} : Maybe<&2, U32>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend sasa_total_cons @h:F32 -> @t:List<&2, F32> -> {0xdf198d67659100c90a58ecd6b01d034d/sasa.sasa_total(h <> t) == F32.add(h, 0xdf198d67659100c90a58ecd6b01d034d/sasa.sasa_total(t)) : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend count_par4_nil @qp:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @c2:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/par.count_par4(empty_atoms, qp, c2) == 0n : Nat} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend count_par4_step @h1:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @h2:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @h3:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @h4:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @qp:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @c2:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/par.count_par4(h1 <> h2 <> h3 <> h4 <> t, qp, c2) == Nat.add(Nat.add(0xdf198d67659100c90a58ecd6b01d034d/topology.head_hit_nat(h1, qp, c2), 0xdf198d67659100c90a58ecd6b01d034d/topology.head_hit_nat(h2, qp, c2)), Nat.add(0xdf198d67659100c90a58ecd6b01d034d/topology.head_hit_nat(h3, qp, c2), Nat.add(0xdf198d67659100c90a58ecd6b01d034d/topology.head_hit_nat(h4, qp, c2), 0xdf198d67659100c90a58ecd6b01d034d/par.count_par4(t, qp, c2)))) : Nat} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend count_par4_small @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @qp:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @c2:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/par.count_par4([h], qp, c2) == 0xdf198d67659100c90a58ecd6b01d034d/topology.count_below([h], qp, c2) : Nat} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend lj_row_par4_nil @pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @eps:F32 -> @sig2:F32 -> @c2:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/par.lj_row_par4(pi, eps, sig2, c2, empty_atoms) == 0.0 : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend lj_row_par4_step @pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @eps:F32 -> @sig2:F32 -> @c2:F32 -> @h1:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @h2:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @h3:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @h4:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> {0xdf198d67659100c90a58ecd6b01d034d/par.lj_row_par4(pi, eps, sig2, c2, h1 <> h2 <> h3 <> h4 <> t) == F32.add(F32.add(0xdf198d67659100c90a58ecd6b01d034d/force.lj_head(pi, eps, sig2, c2, h1), 0xdf198d67659100c90a58ecd6b01d034d/force.lj_head(pi, eps, sig2, c2, h2)), F32.add(F32.add(0xdf198d67659100c90a58ecd6b01d034d/force.lj_head(pi, eps, sig2, c2, h3), 0xdf198d67659100c90a58ecd6b01d034d/force.lj_head(pi, eps, sig2, c2, h4)), 0xdf198d67659100c90a58ecd6b01d034d/par.lj_row_par4(pi, eps, sig2, c2, t))) : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend lj_row_par4_small @pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @eps:F32 -> @sig2:F32 -> @c2:F32 -> @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> {0xdf198d67659100c90a58ecd6b01d034d/par.lj_row_par4(pi, eps, sig2, c2, [h]) == 0xdf198d67659100c90a58ecd6b01d034d/force.lj_row(pi, eps, sig2, c2, [h]) : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend lj_eps_c {0xdf198d67659100c90a58ecd6b01d034d/force.lj_eps(6) == 0.066 : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend lj_eps_h {0xdf198d67659100c90a58ecd6b01d034d/force.lj_eps(1) == 0.03 : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend lj_sig_o {0xdf198d67659100c90a58ecd6b01d034d/force.lj_sig(8) == 2.96 : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend lj_sig_default {0xdf198d67659100c90a58ecd6b01d034d/force.lj_sig(99) == 3.0 : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend lj_row_elem_cons @si:U32 -> @pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @c2:F32 -> @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> {0xdf198d67659100c90a58ecd6b01d034d/force.lj_row_elem(si, pi, h <> t, c2) == F32.add(0xdf198d67659100c90a58ecd6b01d034d/force.lj_row_elem(si, pi, t, c2), 0xdf198d67659100c90a58ecd6b01d034d/force.lj_head_elem(si, pi, c2, h)) : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend lj_total_elem_cons @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @c2:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/force.lj_total_elem(h <> t, ys, c2) == F32.add(0xdf198d67659100c90a58ecd6b01d034d/force.lj_total_elem(t, ys, c2), 0xdf198d67659100c90a58ecd6b01d034d/force.lj_row_elem(0xdf198d67659100c90a58ecd6b01d034d/protein.Atom.elem(h), 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom.pos(h), ys, c2)) : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend bond_total_nil @k:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/bonded.bond_total(empty_atoms, [], k) == 0.0 : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend bond_total_cons @xs:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @s1:U32 -> @s2:U32 -> @t:List<&1, Pair(U32, U32)> -> @k:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/bonded.bond_total(xs, (s1, s2) <> t, k) == F32.add(0xdf198d67659100c90a58ecd6b01d034d/bonded.bond_cov_pair(xs, s1, s2, k), 0xdf198d67659100c90a58ecd6b01d034d/bonded.bond_total(xs, t, k)) : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend angle_total_nil @k:F32 -> @eq:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/bonded.angle_total(empty_atoms, [], k, eq) == 0.0 : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend angle_total_cons @xs:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @sa:U32 -> @sb:U32 -> @sc:U32 -> @t:List<&1, Pair(U32, Pair(U32, U32))> -> @k:F32 -> @eq:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/bonded.angle_total(xs, (sa, sb, sc) <> t, k, eq) == F32.add(0xdf198d67659100c90a58ecd6b01d034d/bonded.angle_triple(xs, sa, sb, sc, k, eq), 0xdf198d67659100c90a58ecd6b01d034d/bonded.angle_total(xs, t, k, eq)) : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend pos_of_serial_none @s:U32 -> {0xdf198d67659100c90a58ecd6b01d034d/bonded.pos_of_serial(empty_atoms, s) == None{} : Maybe<&2, 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend pos_of_serial_some {0xdf198d67659100c90a58ecd6b01d034d/bonded.pos_of_serial([0xdf198d67659100c90a58ecd6b01d034d/protein.Atom{1, 6, 0xdf198d67659100c90a58ecd6b01d034d/geom.V3{1.0, 2.0, 3.0}}], 1) == Some{0xdf198d67659100c90a58ecd6b01d034d/geom.V3{1.0, 2.0, 3.0}} : Maybe<&2, 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend bonded12_nil @a:U32 -> @b:U32 -> {0xdf198d67659100c90a58ecd6b01d034d/bonded.bonded12_flat([], a, b) == False{} : Bool} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend bonded12_hit {0xdf198d67659100c90a58ecd6b01d034d/bonded.bonded12_flat([1, 2], 1, 2) == True{} : Bool} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend bonded12_miss {0xdf198d67659100c90a58ecd6b01d034d/bonded.bonded12_flat([1, 2], 1, 3) == False{} : Bool} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend neighbors_one {0xdf198d67659100c90a58ecd6b01d034d/bonded.bond_neighbors(1, [1, 2, 2, 3]) == [2] : List<&2, U32>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend excluded13_one {0xdf198d67659100c90a58ecd6b01d034d/bonded.excluded13(1, 3, [1, 2, 2, 3]) == True{} : Bool} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend excluded_both {0xdf198d67659100c90a58ecd6b01d034d/bonded.excluded(2, 3, [1, 2, 2, 3]) == True{} : Bool} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend flatten_bonds_one {0xdf198d67659100c90a58ecd6b01d034d/bonded.flatten_bonds([(1, 2)]) == [1, 2] : List<&2, U32>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend lj_row_excl_nil @si:U32 -> @pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @eps:F32 -> @sig2:F32 -> @c2:F32 -> @bonds:List<&2, U32> -> {0xdf198d67659100c90a58ecd6b01d034d/bonded.lj_row_excl(si, pi, eps, sig2, c2, empty_atoms, bonds) == 0.0 : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend lj_total_excl_nil @ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @eps:F32 -> @sig2:F32 -> @c2:F32 -> @bonds:List<&2, U32> -> {0xdf198d67659100c90a58ecd6b01d034d/bonded.lj_total_excl(empty_atoms, ys, eps, sig2, c2, bonds) == 0.0 : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend coul_row_excl_nil @si:U32 -> @pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @qi:F32 -> @ke:F32 -> @c2:F32 -> @bonds:List<&2, U32> -> {0xdf198d67659100c90a58ecd6b01d034d/bonded.coul_row_excl(si, pi, qi, ke, c2, empty_atoms, [], bonds) == 0.0 : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend coul_total_excl_nil @ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @qs_e:List<&2, F32> -> @ke:F32 -> @c2:F32 -> @bonds:List<&2, U32> -> {0xdf198d67659100c90a58ecd6b01d034d/bonded.coul_total_excl(empty_atoms, [], ys, qs_e, ke, c2, bonds) == 0.0 : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend lj_row_elem_excl_nil @si:U32 -> @se:U32 -> @pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @c2:F32 -> @bonds:List<&2, U32> -> {0xdf198d67659100c90a58ecd6b01d034d/bonded.lj_row_elem_excl(si, se, pi, empty_atoms, c2, bonds) == 0.0 : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend lj_total_elem_excl_nil @ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @c2:F32 -> @bonds:List<&2, U32> -> {0xdf198d67659100c90a58ecd6b01d034d/bonded.lj_total_elem_excl(empty_atoms, ys, c2, bonds) == 0.0 : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend lj_row_elem_excl_hit {0xdf198d67659100c90a58ecd6b01d034d/bonded.lj_row_elem_excl(1, 7, 0xdf198d67659100c90a58ecd6b01d034d/geom.V3{0.0, 0.0, 0.0}, [0xdf198d67659100c90a58ecd6b01d034d/protein.Atom{2, 6, 0xdf198d67659100c90a58ecd6b01d034d/geom.V3{1.0, 0.0, 0.0}}], 144.0, [1, 2]) == F32.add(0.0, 0.0) : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend lj_row_elem_excl_link {0xdf198d67659100c90a58ecd6b01d034d/bonded.lj_row_elem_excl(1, 7, 0xdf198d67659100c90a58ecd6b01d034d/geom.V3{0.0, 0.0, 0.0}, [0xdf198d67659100c90a58ecd6b01d034d/protein.Atom{3, 6, 0xdf198d67659100c90a58ecd6b01d034d/geom.V3{2.0, 0.0, 0.0}}], 144.0, [1, 2, 2, 3]) == F32.add(0.0, 0.0) : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend conect_lines_nil {0xdf198d67659100c90a58ecd6b01d034d/pdb.conect_lines([]) == [] : List<&2, String>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend conect_keep {0xdf198d67659100c90a58ecd6b01d034d/pdb.conect_lines(["ATOM 1 N", "CONECT 20 282"]) == ["CONECT 20 282"] : List<&2, String>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend parse_conect_one {0xdf198d67659100c90a58ecd6b01d034d/pdb.parse_conect_line("CONECT 20 282") == [(20, 282)] : List<&1, Pair(U32, U32)>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend parse_conect_none {0xdf198d67659100c90a58ecd6b01d034d/pdb.parse_conect_line("CONECT") == [] : List<&1, Pair(U32, U32)>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend mass_c {0xdf198d67659100c90a58ecd6b01d034d/force.mass(6) == 12.011 : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend mass_h {0xdf198d67659100c90a58ecd6b01d034d/force.mass(1) == 1.008 : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend coul_frow_cons @pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @qi:F32 -> @ke:F32 -> @c2:F32 -> @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @qh:F32 -> @qt:List<&2, F32> -> {0xdf198d67659100c90a58ecd6b01d034d/force.coul_frow(pi, qi, ke, c2, h <> t, qh <> qt) == 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3.add(0xdf198d67659100c90a58ecd6b01d034d/force.coul_frow(pi, qi, ke, c2, t, qt), 0xdf198d67659100c90a58ecd6b01d034d/force.coul_fhead(pi, qi, ke, c2, h, qh)) : 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend coul_forces_cons @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @qh:F32 -> @qt:List<&2, F32> -> @ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @qs_e:List<&2, F32> -> @ke:F32 -> @c2:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/force.coul_forces(h <> t, qh <> qt, ys, qs_e, ke, c2) == 0xdf198d67659100c90a58ecd6b01d034d/force.coul_fself_atom(h, qh, ys, qs_e, ke, c2) <> 0xdf198d67659100c90a58ecd6b01d034d/force.coul_forces(t, qt, ys, qs_e, ke, c2) : List<&2, 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend coul_frow_nil @pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @qi:F32 -> @ke:F32 -> @c2:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/force.coul_frow(pi, qi, ke, c2, empty_atoms, []) == 0xdf198d67659100c90a58ecd6b01d034d/geom.V3{0.0, 0.0, 0.0} : 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend lj_row_pbc_cons @pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @eps:F32 -> @sig2:F32 -> @c2:F32 -> @box:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> {0xdf198d67659100c90a58ecd6b01d034d/pbc.lj_row_pbc(pi, eps, sig2, c2, box, h <> t) == F32.add(0xdf198d67659100c90a58ecd6b01d034d/pbc.lj_row_pbc(pi, eps, sig2, c2, box, t), 0xdf198d67659100c90a58ecd6b01d034d/pbc.lj_head_pbc(pi, eps, sig2, c2, box, h)) : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend lj_total_pbc_cons @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @eps:F32 -> @sig2:F32 -> @c2:F32 -> @box:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> {0xdf198d67659100c90a58ecd6b01d034d/pbc.lj_total_pbc(h <> t, ys, eps, sig2, c2, box) == F32.add(0xdf198d67659100c90a58ecd6b01d034d/pbc.lj_total_pbc(t, ys, eps, sig2, c2, box), 0xdf198d67659100c90a58ecd6b01d034d/pbc.lj_self_atom_pbc(h, ys, eps, sig2, c2, box)) : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend lj_row_pbc_nil @pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @eps:F32 -> @sig2:F32 -> @c2:F32 -> @box:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> {0xdf198d67659100c90a58ecd6b01d034d/pbc.lj_row_pbc(pi, eps, sig2, c2, box, empty_atoms) == 0.0 : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend lj_frow_pbc_cons @pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @eps:F32 -> @sig2:F32 -> @c2:F32 -> @box:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> {0xdf198d67659100c90a58ecd6b01d034d/pbc.lj_frow_pbc(pi, eps, sig2, c2, box, h <> t) == 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3.add(0xdf198d67659100c90a58ecd6b01d034d/pbc.lj_frow_pbc(pi, eps, sig2, c2, box, t), 0xdf198d67659100c90a58ecd6b01d034d/pbc.lj_fhead_pbc(pi, eps, sig2, c2, box, h)) : 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend lj_forces_pbc_cons @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @eps:F32 -> @sig2:F32 -> @c2:F32 -> @box:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> {0xdf198d67659100c90a58ecd6b01d034d/pbc.lj_forces_pbc(h <> t, ys, eps, sig2, c2, box) == 0xdf198d67659100c90a58ecd6b01d034d/pbc.lj_fself_atom_pbc(h, ys, eps, sig2, c2, box) <> 0xdf198d67659100c90a58ecd6b01d034d/pbc.lj_forces_pbc(t, ys, eps, sig2, c2, box) : List<&2, 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend lj_forces_pbc_nil @ys:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @eps:F32 -> @sig2:F32 -> @c2:F32 -> @box:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> {0xdf198d67659100c90a58ecd6b01d034d/pbc.lj_forces_pbc(empty_atoms, ys, eps, sig2, c2, box) == [] : List<&2, 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend cov_rad_c {0xdf198d67659100c90a58ecd6b01d034d/bonded.cov_rad(6) == 0.76 : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend infer_row_nil @si:U32 -> @pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @ei:U32 -> {0xdf198d67659100c90a58ecd6b01d034d/bonded.infer_row(si, pi, ei, empty_atoms) == [] : List<&1, Pair(U32, U32)>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend infer_row_cons @si:U32 -> @pi:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @ei:U32 -> @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> {0xdf198d67659100c90a58ecd6b01d034d/bonded.infer_row(si, pi, ei, h <> t) == 0xdf198d67659100c90a58ecd6b01d034d/bonded.append_infer(0xdf198d67659100c90a58ecd6b01d034d/bonded.infer_one(si, pi, ei, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom.serial(h), 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom.elem(h), 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom.pos(h)), 0xdf198d67659100c90a58ecd6b01d034d/bonded.infer_row(si, pi, ei, t)) : List<&1, Pair(U32, U32)>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend infer_total_nil {0xdf198d67659100c90a58ecd6b01d034d/bonded.infer_total(empty_atoms) == [] : List<&1, Pair(U32, U32)>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend bond_forces_nil @bonds:List<&2, U32> -> @k:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/bonded.bond_forces(empty_atoms, bonds, k) == [] : List<&2, 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend bond_forces_cons @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> @bonds:List<&2, U32> -> @k:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/bonded.bond_forces(h <> t, bonds, k) == 0xdf198d67659100c90a58ecd6b01d034d/bonded.bond_force_list(0xdf198d67659100c90a58ecd6b01d034d/protein.Atom.serial(h), bonds, h <> t, k) <> 0xdf198d67659100c90a58ecd6b01d034d/bonded.bond_forces(t, bonds, k) : List<&2, 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend dyn_of_atoms_nil {0xdf198d67659100c90a58ecd6b01d034d/sim.dyn_of_atoms(empty_atoms) == [] : List<&2, 0xdf198d67659100c90a58ecd6b01d034d/sim.DynAtom>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend dyn_of_atoms_cons @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> {0xdf198d67659100c90a58ecd6b01d034d/sim.dyn_of_atoms(h <> t) == 0xdf198d67659100c90a58ecd6b01d034d/sim.dyn_of_atom(h) <> 0xdf198d67659100c90a58ecd6b01d034d/sim.dyn_of_atoms(t) : List<&2, 0xdf198d67659100c90a58ecd6b01d034d/sim.DynAtom>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend dyn_atoms_nil {0xdf198d67659100c90a58ecd6b01d034d/sim.dyn_atoms([]) == [] : List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend vv_scale_nil @lam:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/sim.vv_scale([], lam) == [] : List<&2, 0xdf198d67659100c90a58ecd6b01d034d/sim.DynAtom>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend vv_scale_cons @h:0xdf198d67659100c90a58ecd6b01d034d/sim.DynAtom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/sim.DynAtom> -> @lam:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/sim.vv_scale(h <> t, lam) == 0xdf198d67659100c90a58ecd6b01d034d/sim.vv_scale_head(h, lam) <> 0xdf198d67659100c90a58ecd6b01d034d/sim.vv_scale(t, lam) : List<&2, 0xdf198d67659100c90a58ecd6b01d034d/sim.DynAtom>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend vv_half_nil @dt:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/sim.vv_half([], dt) == [] : List<&2, 0xdf198d67659100c90a58ecd6b01d034d/sim.DynAtom>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend vv_half_cons @h:0xdf198d67659100c90a58ecd6b01d034d/sim.DynAtom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/sim.DynAtom> -> @dt:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/sim.vv_half(h <> t, dt) == 0xdf198d67659100c90a58ecd6b01d034d/sim.vv_half_head(h, dt) <> 0xdf198d67659100c90a58ecd6b01d034d/sim.vv_half(t, dt) : List<&2, 0xdf198d67659100c90a58ecd6b01d034d/sim.DynAtom>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend vv_full_nil @dt:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/sim.vv_full([], dt) == [] : List<&2, 0xdf198d67659100c90a58ecd6b01d034d/sim.DynAtom>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend vv_full_cons @h:0xdf198d67659100c90a58ecd6b01d034d/sim.DynAtom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/sim.DynAtom> -> @dt:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/sim.vv_full(h <> t, dt) == 0xdf198d67659100c90a58ecd6b01d034d/sim.vv_full_head(h, dt) <> 0xdf198d67659100c90a58ecd6b01d034d/sim.vv_full(t, dt) : List<&2, 0xdf198d67659100c90a58ecd6b01d034d/sim.DynAtom>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend ke_sim_nil {0xdf198d67659100c90a58ecd6b01d034d/sim.ke_sim_of([]) == 0.0 : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend md_run_zero @ds:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/sim.DynAtom> -> @qs:List<&2, F32> -> @bonds:List<&2, U32> -> @p:0xdf198d67659100c90a58ecd6b01d034d/sim.SimParams -> @dt:F32 -> @tau:F32 -> @temp0:F32 -> @n:Nat -> {0xdf198d67659100c90a58ecd6b01d034d/sim.md_run(0n, ds, qs, bonds, p, dt, tau, temp0, n) == ds : List<&2, 0xdf198d67659100c90a58ecd6b01d034d/sim.DynAtom>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend min_run_zero @ds:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/sim.DynAtom> -> @qs:List<&2, F32> -> @bonds:List<&2, U32> -> @p:0xdf198d67659100c90a58ecd6b01d034d/sim.SimParams -> @dt:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/sim.min_run(0n, ds, qs, bonds, p, dt) == ds : List<&2, 0xdf198d67659100c90a58ecd6b01d034d/sim.DynAtom>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend zero_charges_nil {0xdf198d67659100c90a58ecd6b01d034d/sim.zero_charges(empty_atoms) == [] : List<&2, F32>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend zero_charges_cons @h:0xdf198d67659100c90a58ecd6b01d034d/protein.Atom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/protein.Atom> -> {0xdf198d67659100c90a58ecd6b01d034d/sim.zero_charges(h <> t) == 0.0 <> 0xdf198d67659100c90a58ecd6b01d034d/sim.zero_charges(t) : List<&2, F32>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend sd_norm_sweep_nil @dt:F32 -> {0xdf198d67659100c90a58ecd6b01d034d/sim.sd_norm_sweep([], dt) == [] : List<&2, 0xdf198d67659100c90a58ecd6b01d034d/sim.DynAtom>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend maxforce2_nil {0xdf198d67659100c90a58ecd6b01d034d/sim.maxforce2_of([]) == 0.0 : F32} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend dyn_set_force_nil @fs:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3> -> {0xdf198d67659100c90a58ecd6b01d034d/sim.dyn_set_force([], fs) == [] : List<&2, 0xdf198d67659100c90a58ecd6b01d034d/sim.DynAtom>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend add_forces_nil {0xdf198d67659100c90a58ecd6b01d034d/sim.add_forces([], []) == [] : List<&2, 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend add_forces_cons @x:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @xt:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3> -> @y:0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3 -> @yt:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3> -> {0xdf198d67659100c90a58ecd6b01d034d/sim.add_forces(x <> xt, y <> yt) == 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3.add(x, y) <> 0xdf198d67659100c90a58ecd6b01d034d/sim.add_forces(xt, yt) : List<&2, 0xdf198d67659100c90a58ecd6b01d034d/geom.Vec3>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend pairs_of_flat_nil {0xdf198d67659100c90a58ecd6b01d034d/sim.pairs_of_flat([]) == [] : List<&1, Pair(U32, U32)>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend pairs_of_flat_cons @x:U32 -> @y:U32 -> @t:List<&2, U32> -> {0xdf198d67659100c90a58ecd6b01d034d/sim.pairs_of_flat(x <> y <> t) == (x, y) <> 0xdf198d67659100c90a58ecd6b01d034d/sim.pairs_of_flat(t) : List<&1, Pair(U32, U32)>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend pad_left_golden {0xdf198d67659100c90a58ecd6b01d034d/pdb.pad_left("AB", 5n) == " AB" : String} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend pad_right_golden {0xdf198d67659100c90a58ecd6b01d034d/pdb.pad_right("AB", 5n) == "AB " : String} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend fmt_u32_golden {0xdf198d67659100c90a58ecd6b01d034d/pdb.fmt_u32(5n, 42) == " 42" : String} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend elem_sym_golden {0xdf198d67659100c90a58ecd6b01d034d/pdb.elem_sym(26) == "FE" : String} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend tpl_has_bond_ala {0xdf198d67659100c90a58ecd6b01d034d/tpl.tpl_has_bond("ALA", "N", "CA") == True{} : Bool} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend tpl_has_bond_miss {0xdf198d67659100c90a58ecd6b01d034d/tpl.tpl_has_bond("ALA", "N", "O") == False{} : Bool} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend tpl_has_bond_unknown {0xdf198d67659100c90a58ecd6b01d034d/tpl.tpl_has_bond("ZZZ", "N", "CA") == False{} : Bool} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend tpl_has_bond_his {0xdf198d67659100c90a58ecd6b01d034d/tpl.tpl_has_bond("HID", "N", "CA") == True{} : Bool} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend tpl_row_nil @a:0xdf198d67659100c90a58ecd6b01d034d/tpl.TplAtom -> {0xdf198d67659100c90a58ecd6b01d034d/tpl.tpl_row(a, []) == [] : List<&1, Pair(U32, U32)>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend tpl_row_cons @a:0xdf198d67659100c90a58ecd6b01d034d/tpl.TplAtom -> @h:0xdf198d67659100c90a58ecd6b01d034d/tpl.TplAtom -> @t:List<&2, 0xdf198d67659100c90a58ecd6b01d034d/tpl.TplAtom> -> {0xdf198d67659100c90a58ecd6b01d034d/tpl.tpl_row(a, h <> t) == 0xdf198d67659100c90a58ecd6b01d034d/tpl.append_tpl(0xdf198d67659100c90a58ecd6b01d034d/tpl.tpl_one(a, h), 0xdf198d67659100c90a58ecd6b01d034d/tpl.tpl_row(a, t)) : List<&1, Pair(U32, U32)>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend tpl_total_nil {0xdf198d67659100c90a58ecd6b01d034d/tpl.tpl_total([]) == [] : List<&1, Pair(U32, U32)>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend parse_tpl_golden {0xdf198d67659100c90a58ecd6b01d034d/tpl.parse_tpl_line("ATOM 1 N ALA A 1 11.104 13.207 2.100 1.00 13.79 N ") == Some{0xdf198d67659100c90a58ecd6b01d034d/tpl.TA{1, 65, 1n, "ALA", "N"}} : Maybe<&2, 0xdf198d67659100c90a58ecd6b01d034d/tpl.TplAtom>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend neighbors_except_golden {0xdf198d67659100c90a58ecd6b01d034d/bonded.bond_neighbors_except(2, 1, [1, 2, 2, 3]) == [3] : List<&2, U32>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend fan_triples_golden {0xdf198d67659100c90a58ecd6b01d034d/bonded.fan_triples(1, 2, [3, 4]) == [(1, 2, 3), (1, 2, 4)] : List<&1, Pair(U32, Pair(U32, U32))>} 0xdf198d67659100c90a58ecd6b01d034d/LAWS.bend angle_triples_auto_golden {0xdf198d67659100c90a58ecd6b01d034d/bonded.angle_triples_auto([1, 2, 2, 3]) == [(1, 2, 3), (3, 2, 1)] : List<&1, Pair(U32, Pair(U32, U32))>} 0xe4067e0d858024083f36a7abe7281e89/proofs/crypto/sha/list_proofs.bend append_assoc @-A:Data -> @xs:List<&2, A> -> @ys:List<&2, A> -> @zs:List<&2, A> -> {List.append(&2, A, List.append(&2, A, xs, ys), zs) == List.append(&2, A, xs, List.append(&2, A, ys, zs)) : List<&2, A>} 0xe4067e0d858024083f36a7abe7281e89/proofs/crypto/sha/list_proofs.bend reverse_twice @-A:Data -> @xs:List<&2, A> -> @acc:List<&2, A> -> @ys:List<&2, A> -> {List.reverse.go(&2, A, List.reverse.go(&2, A, xs, acc), ys) == List.reverse.go(&2, A, acc, List.append(&2, A, xs, ys)) : List<&2, A>} 0xe4067e0d858024083f36a7abe7281e89/proofs/crypto/sha/list_proofs.bend reverse_append @-A:Data -> @xs:List<&2, A> -> @ys:List<&2, A> -> {List.reverse.go(&2, A, List.reverse(&2, A, xs), ys) == List.append(&2, A, xs, ys) : List<&2, A>} 0xe4067e0d858024083f36a7abe7281e89/proofs/crypto/sha/list_proofs.bend add_succ @n:Nat -> @m:Nat -> {Nat.add(n, 1n+m) == 1n+Nat.add(n, m) : Nat} 0xe4067e0d858024083f36a7abe7281e89/proofs/crypto/sha/list_proofs.bend add_zero @n:Nat -> {Nat.add(n, 0n) == n : Nat} 0xe4067e0d858024083f36a7abe7281e89/proofs/crypto/sha/list_proofs.bend append_assoc_reverse @-A:Data -> @+xs:List<&2, A> -> @+ys:List<&2, A> -> @+zs:List<&2, A> -> {List.append(&2, A, xs, List.append(&2, A, ys, zs)) == List.append(&2, A, List.append(&2, A, xs, ys), zs) : List<&2, A>} 0xe4067e0d858024083f36a7abe7281e89/proofs/crypto/sha/list_proofs.bend add_swap @+n:Nat -> @+k:Nat -> @+m:Nat -> {Nat.add(n, Nat.add(k, m)) == Nat.add(k, Nat.add(n, m)) : Nat} 0xe4067e0d858024083f36a7abe7281e89/proofs/crypto/sha/packed/packed_array_proof.bend reify @a:Array -> Sigma<&2, &1, Tree, t => {a == thaw(t) : Array}> 0xe4067e0d858024083f36a7abe7281e89/proofs/crypto/sha/packed/packed_array_proof.bend reify_node @-l:Array -> @-r:Array -> @left:Sigma<&2, &1, Tree, t => {l == thaw(t) : Array}> -> @right:Sigma<&2, &1, Tree, t => {r == thaw(t) : Array}> -> Sigma<&2, &1, Tree, t => {ANode{l, r} == thaw(t) : Array}> 0xe4067e0d858024083f36a7abe7281e89/proofs/crypto/sha/padding.bend zeros_correct @r:Nat -> {Nat.mod(Nat.sub(119n, r), 64n) == 0xe4067e0d858024083f36a7abe7281e89/spec/crypto/sha.zero_count(r) : Nat} 0xe6b82fa6c4c459c7023adf4b12a3ac46/LAWS.bend bcast_commute @+s:List<&2, Nat> -> @+t:List<&2, Nat> -> {0xe6b82fa6c4c459c7023adf4b12a3ac46/tinygrad/shape.bcast(s, t) == 0xe6b82fa6c4c459c7023adf4b12a3ac46/tinygrad/shape.bcast(t, s) : List<&2, Nat>} 0xe6b82fa6c4c459c7023adf4b12a3ac46/LAWS.bend matmul_shape @+m:Nat -> @+k:Nat -> @+n:Nat -> {0xe6b82fa6c4c459c7023adf4b12a3ac46/tinygrad/shape.matmul_out(m, k, n) == [m, n] : List<&2, Nat>} 0xe6b82fa6c4c459c7023adf4b12a3ac46/LAWS.bend bcast_numel @+s:List<&2, Nat> -> @+t:List<&2, Nat> -> @c:0xe6b82fa6c4c459c7023adf4b12a3ac46/tinygrad/shape.bc(s, t) -> {0xe6b82fa6c4c459c7023adf4b12a3ac46/tinygrad/shape.numel(0xe6b82fa6c4c459c7023adf4b12a3ac46/tinygrad/shape.bcast(s, t)) == 0xe6b82fa6c4c459c7023adf4b12a3ac46/tinygrad/shape.numel(t) : Nat} 0xe6b82fa6c4c459c7023adf4b12a3ac46/LAWS.bend grad_accum_len @+xs:List<&2, Nat> -> @+ys:List<&2, Nat> -> {List.length(&2, Nat, List.append(&2, Nat, xs, ys)) == Nat.add(List.length(&2, Nat, xs), List.length(&2, Nat, ys)) : Nat} 0xe6b82fa6c4c459c7023adf4b12a3ac46/LAWS.bend reduce_numel @+s:List<&2, Nat> -> {0xe6b82fa6c4c459c7023adf4b12a3ac46/tinygrad/shape.numel(s) == Nat.mul(0xe6b82fa6c4c459c7023adf4b12a3ac46/tinygrad/shape.at(s, 0n), 0xe6b82fa6c4c459c7023adf4b12a3ac46/tinygrad/shape.numel(0xe6b82fa6c4c459c7023adf4b12a3ac46/tinygrad/shape.drop_at(s, 0n))) : Nat} 0xedb848fc7835fe5f9d34e575a7612788/LAWS.bend invalid_is_none {0xedb848fc7835fe5f9d34e575a7612788/lib.ColorSample.rgb(bad_range, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng.seed(1)) == None{} : Maybe<&1, Pair(0xc6ecb72f45a1b2f83318765698582f7f/lib.Rgb, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng)>} 0xedb848fc7835fe5f9d34e575a7612788/LAWS.bend same_seed_same_first {0xedb848fc7835fe5f9d34e575a7612788/lib.ColorSample.rgb(full_range, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng.seed(42)) == 0xedb848fc7835fe5f9d34e575a7612788/lib.ColorSample.rgb(full_range, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng.seed(42)) : Maybe<&1, Pair(0xc6ecb72f45a1b2f83318765698582f7f/lib.Rgb, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng)>} 0xedb848fc7835fe5f9d34e575a7612788/LAWS.bend seed42_full_r {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb_r(0xedb848fc7835fe5f9d34e575a7612788/lib.ColorSample.unwrap_rgb(0xedb848fc7835fe5f9d34e575a7612788/lib.ColorSample.rgb(full_range, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng.seed(42)))) == 40 : U32} 0xedb848fc7835fe5f9d34e575a7612788/LAWS.bend seed42_full_g {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb_g(0xedb848fc7835fe5f9d34e575a7612788/lib.ColorSample.unwrap_rgb(0xedb848fc7835fe5f9d34e575a7612788/lib.ColorSample.rgb(full_range, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng.seed(42)))) == 172 : U32} 0xedb848fc7835fe5f9d34e575a7612788/LAWS.bend seed42_full_b {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb_b(0xedb848fc7835fe5f9d34e575a7612788/lib.ColorSample.unwrap_rgb(0xedb848fc7835fe5f9d34e575a7612788/lib.ColorSample.rgb(full_range, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng.seed(42)))) == 3 : U32} 0xedb848fc7835fe5f9d34e575a7612788/LAWS.bend seed42_narrow_r {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb_r(0xedb848fc7835fe5f9d34e575a7612788/lib.ColorSample.unwrap_rgb(0xedb848fc7835fe5f9d34e575a7612788/lib.ColorSample.rgb(narrow, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng.seed(42)))) == 10 : U32} 0xedb848fc7835fe5f9d34e575a7612788/LAWS.bend seed42_narrow_g {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb_g(0xedb848fc7835fe5f9d34e575a7612788/lib.ColorSample.unwrap_rgb(0xedb848fc7835fe5f9d34e575a7612788/lib.ColorSample.rgb(narrow, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng.seed(42)))) == 36 : U32} 0xedb848fc7835fe5f9d34e575a7612788/LAWS.bend seed42_narrow_b {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb_b(0xedb848fc7835fe5f9d34e575a7612788/lib.ColorSample.unwrap_rgb(0xedb848fc7835fe5f9d34e575a7612788/lib.ColorSample.rgb(narrow, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng.seed(42)))) == 36 : U32} 0xedb848fc7835fe5f9d34e575a7612788/LAWS.bend point_r {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb_r(0xedb848fc7835fe5f9d34e575a7612788/lib.ColorSample.unwrap_rgb(0xedb848fc7835fe5f9d34e575a7612788/lib.ColorSample.rgb(point, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng.seed(7)))) == 7 : U32} 0xedb848fc7835fe5f9d34e575a7612788/LAWS.bend point_g {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb_g(0xedb848fc7835fe5f9d34e575a7612788/lib.ColorSample.unwrap_rgb(0xedb848fc7835fe5f9d34e575a7612788/lib.ColorSample.rgb(point, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng.seed(7)))) == 8 : U32} 0xedb848fc7835fe5f9d34e575a7612788/LAWS.bend point_b {0xc6ecb72f45a1b2f83318765698582f7f/lib.Color.rgb_b(0xedb848fc7835fe5f9d34e575a7612788/lib.ColorSample.unwrap_rgb(0xedb848fc7835fe5f9d34e575a7612788/lib.ColorSample.rgb(point, 0xfd7037736e4fa1794a671d0278638da7/lib.Prng.seed(7)))) == 9 : U32} 0xedb848fc7835fe5f9d34e575a7612788/LAWS.bend range_ok_good {0xedb848fc7835fe5f9d34e575a7612788/lib.ColorSample.range_ok_u32(full_range) == True{} : Bool} 0xedb848fc7835fe5f9d34e575a7612788/LAWS.bend range_ok_bad {0xedb848fc7835fe5f9d34e575a7612788/lib.ColorSample.range_ok_u32(bad_range) == False{} : Bool} 0xf5507d46d06a1a8043dcb1a582194615/LAWS.bend first @+name:String -> {0xf5507d46d06a1a8043dcb1a582194615/observe.run([0xf5507d46d06a1a8043dcb1a582194615/protocol.Intern{name}, 0xf5507d46d06a1a8043dcb1a582194615/protocol.Resolve{0}, 0xf5507d46d06a1a8043dcb1a582194615/protocol.Length{}], 1) == [0xf5507d46d06a1a8043dcb1a582194615/protocol.Observed{0xf5507d46d06a1a8043dcb1a582194615/protocol.Id{0}, 1, 1, [name]}, 0xf5507d46d06a1a8043dcb1a582194615/protocol.Observed{0xf5507d46d06a1a8043dcb1a582194615/protocol.Name{name}, 1, 1, [name]}, 0xf5507d46d06a1a8043dcb1a582194615/protocol.Observed{0xf5507d46d06a1a8043dcb1a582194615/protocol.Number{1}, 1, 1, [name]}] : List<&2, 0xf5507d46d06a1a8043dcb1a582194615/protocol.Observation>} 0xf5507d46d06a1a8043dcb1a582194615/LAWS.bend zero_limit @+name:String -> {0xf5507d46d06a1a8043dcb1a582194615/observe.run([0xf5507d46d06a1a8043dcb1a582194615/protocol.Intern{name}, 0xf5507d46d06a1a8043dcb1a582194615/protocol.Find{name}, 0xf5507d46d06a1a8043dcb1a582194615/protocol.Resolve{0}], 0) == [0xf5507d46d06a1a8043dcb1a582194615/protocol.Observed{0xf5507d46d06a1a8043dcb1a582194615/protocol.Full{}, 0, 0, []}, 0xf5507d46d06a1a8043dcb1a582194615/protocol.Observed{0xf5507d46d06a1a8043dcb1a582194615/protocol.Missing{}, 0, 0, []}, 0xf5507d46d06a1a8043dcb1a582194615/protocol.Observed{0xf5507d46d06a1a8043dcb1a582194615/protocol.Invalid{}, 0, 0, []}] : List<&2, 0xf5507d46d06a1a8043dcb1a582194615/protocol.Observation>} 0xf5507d46d06a1a8043dcb1a582194615/LAWS.bend empty_find @name:String -> {0xf5507d46d06a1a8043dcb1a582194615/observe.run([0xf5507d46d06a1a8043dcb1a582194615/protocol.Find{name}], 3) == [0xf5507d46d06a1a8043dcb1a582194615/protocol.Observed{0xf5507d46d06a1a8043dcb1a582194615/protocol.Missing{}, 0, 3, []}] : List<&2, 0xf5507d46d06a1a8043dcb1a582194615/protocol.Observation>} 0xf5507d46d06a1a8043dcb1a582194615/LAWS.bend repeat_preserves {0xf5507d46d06a1a8043dcb1a582194615/cases.check(0xf5507d46d06a1a8043dcb1a582194615/cases.repeat, 4) == True{} : Bool} 0xf5507d46d06a1a8043dcb1a582194615/LAWS.bend full_preserves {0xf5507d46d06a1a8043dcb1a582194615/cases.check(0xf5507d46d06a1a8043dcb1a582194615/cases.full, 1) == True{} : Bool} 0xf5507d46d06a1a8043dcb1a582194615/LAWS.bend unicode_exact {0xf5507d46d06a1a8043dcb1a582194615/cases.check(0xf5507d46d06a1a8043dcb1a582194615/cases.unicode, 6) == True{} : Bool} 0xf5507d46d06a1a8043dcb1a582194615/LAWS.bend default_limit {0xf5507d46d06a1a8043dcb1a582194615/observe.trace([0xf5507d46d06a1a8043dcb1a582194615/protocol.Length{}, 0xf5507d46d06a1a8043dcb1a582194615/protocol.Limit{}, 0xf5507d46d06a1a8043dcb1a582194615/protocol.Resolve{4294967295}], 0xf5507d46d06a1a8043dcb1a582194615/main.Table.new) == [0xf5507d46d06a1a8043dcb1a582194615/protocol.Observed{0xf5507d46d06a1a8043dcb1a582194615/protocol.Number{0}, 0, 16777216, []}, 0xf5507d46d06a1a8043dcb1a582194615/protocol.Observed{0xf5507d46d06a1a8043dcb1a582194615/protocol.Number{16777216}, 0, 16777216, []}, 0xf5507d46d06a1a8043dcb1a582194615/protocol.Observed{0xf5507d46d06a1a8043dcb1a582194615/protocol.Invalid{}, 0, 16777216, []}] : List<&2, 0xf5507d46d06a1a8043dcb1a582194615/protocol.Observation>} 0xf5507d46d06a1a8043dcb1a582194615/LAWS.bend clamp_limit {0xf5507d46d06a1a8043dcb1a582194615/observe.run([0xf5507d46d06a1a8043dcb1a582194615/protocol.Limit{}], 4294967295) == [0xf5507d46d06a1a8043dcb1a582194615/protocol.Observed{0xf5507d46d06a1a8043dcb1a582194615/protocol.Number{16777216}, 0, 16777216, []}] : List<&2, 0xf5507d46d06a1a8043dcb1a582194615/protocol.Observation>} 0xf5a52e743a7f75c5d624c27c9e0ec81f/src/LAWS.bend timeout_is_explicit @+ms:U32 -> @+request:0xf5a52e743a7f75c5d624c27c9e0ec81f/src/http.Request -> {0xf5a52e743a7f75c5d624c27c9e0ec81f/src/http.timeout(0xf5a52e743a7f75c5d624c27c9e0ec81f/src/http.with_timeout(ms, request)) == ms : U32} 0xf5a52e743a7f75c5d624c27c9e0ec81f/src/LAWS.bend body_limit_is_explicit @+bytes:U32 -> @+request:0xf5a52e743a7f75c5d624c27c9e0ec81f/src/http.Request -> {0xf5a52e743a7f75c5d624c27c9e0ec81f/src/http.body_limit(0xf5a52e743a7f75c5d624c27c9e0ec81f/src/http.with_max_bytes(bytes, request)) == bytes : U32} 0xf5a52e743a7f75c5d624c27c9e0ec81f/src/LAWS.bend setting_timeout_preserves_body_limit @+ms:U32 -> @+request:0xf5a52e743a7f75c5d624c27c9e0ec81f/src/http.Request -> {0xf5a52e743a7f75c5d624c27c9e0ec81f/src/http.body_limit(0xf5a52e743a7f75c5d624c27c9e0ec81f/src/http.with_timeout(ms, request)) == 0xf5a52e743a7f75c5d624c27c9e0ec81f/src/http.body_limit(request) : U32} 0xf5a52e743a7f75c5d624c27c9e0ec81f/src/LAWS.bend setting_header_preserves_timeout @+name:String -> @+value:String -> @+request:0xf5a52e743a7f75c5d624c27c9e0ec81f/src/http.Request -> {0xf5a52e743a7f75c5d624c27c9e0ec81f/src/http.timeout(0xf5a52e743a7f75c5d624c27c9e0ec81f/src/http.with_header(name, value, request)) == 0xf5a52e743a7f75c5d624c27c9e0ec81f/src/http.timeout(request) : U32} 0xf5a52e743a7f75c5d624c27c9e0ec81f/src/LAWS.bend setting_header_preserves_body_limit @+name:String -> @+value:String -> @+request:0xf5a52e743a7f75c5d624c27c9e0ec81f/src/http.Request -> {0xf5a52e743a7f75c5d624c27c9e0ec81f/src/http.body_limit(0xf5a52e743a7f75c5d624c27c9e0ec81f/src/http.with_header(name, value, request)) == 0xf5a52e743a7f75c5d624c27c9e0ec81f/src/http.body_limit(request) : U32} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend encode_empty {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.encode([]) == "" : String} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend encode_zero {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.encode([0]) == "00" : String} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend encode_one {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.encode([1]) == "01" : String} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend encode_ten {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.encode([10]) == "0a" : String} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend encode_fifteen {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.encode([15]) == "0f" : String} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend encode_sixteen {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.encode([16]) == "10" : String} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend encode_sevenf {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.encode([127]) == "7f" : String} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend encode_ff {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.encode([255]) == "ff" : String} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend encode_masks_u32 {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.encode([256]) == "00" : String} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend encode_multiple {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.encode([0, 10, 255]) == "000aff" : String} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend decode_empty {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.decode("") == Some{[]} : Maybe<&2, List<&2, U32>>} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend decode_zero {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.decode("00") == Some{[0]} : Maybe<&2, List<&2, U32>>} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend decode_lowercase {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.decode("0aff") == Some{[10, 255]} : Maybe<&2, List<&2, U32>>} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend decode_uppercase {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.decode("0AFF") == Some{[10, 255]} : Maybe<&2, List<&2, U32>>} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend decode_mixed_case {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.decode("aB0c") == Some{[171, 12]} : Maybe<&2, List<&2, U32>>} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend decode_multiple {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.decode("000aff7f") == Some{[0, 10, 255, 127]} : Maybe<&2, List<&2, U32>>} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend roundtrip_empty {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.decode(0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.encode([])) == Some{[]} : Maybe<&2, List<&2, U32>>} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend roundtrip_one {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.decode(0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.encode([1])) == Some{[1]} : Maybe<&2, List<&2, U32>>} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend roundtrip_multiple {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.decode(0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.encode([0, 10, 127, 128, 255])) == Some{[0, 10, 127, 128, 255]} : Maybe<&2, List<&2, U32>>} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend reject_odd_length {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.decode("a") == None{} : Maybe<&2, List<&2, U32>>} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend reject_three_chars {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.decode("abc") == None{} : Maybe<&2, List<&2, U32>>} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend reject_invalid_g {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.decode("0g") == None{} : Maybe<&2, List<&2, U32>>} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend reject_invalid_prefix {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.decode("0x") == None{} : Maybe<&2, List<&2, U32>>} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend reject_whitespace {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.decode(" 0") == None{} : Maybe<&2, List<&2, U32>>} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend reject_prefix {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.decode("0x0a") == None{} : Maybe<&2, List<&2, U32>>} 0xf941a081d658b4ed09b0d1c5a3d26f48/LAWS.bend reject_bad_tail {0xf941a081d658b4ed09b0d1c5a3d26f48/lib.Hex.decode("00zz") == None{} : Maybe<&2, List<&2, U32>>} 0xfd7037736e4fa1794a671d0278638da7/LAWS.bend seed_zero_aliases_one {0xfd7037736e4fa1794a671d0278638da7/lib.Prng.seed(0) == 0xfd7037736e4fa1794a671d0278638da7/lib.Prng.seed(1) : 0xfd7037736e4fa1794a671d0278638da7/lib.Prng} 0xfd7037736e4fa1794a671d0278638da7/LAWS.bend seed1_first {0xfd7037736e4fa1794a671d0278638da7/lib.Prng.next_value(0xfd7037736e4fa1794a671d0278638da7/lib.Prng.seed(1)) == 270369 : U32} 0xfd7037736e4fa1794a671d0278638da7/LAWS.bend seed1_second {0xfd7037736e4fa1794a671d0278638da7/lib.Prng.next_value(0xfd7037736e4fa1794a671d0278638da7/lib.Prng.next_state(0xfd7037736e4fa1794a671d0278638da7/lib.Prng.seed(1))) == 67634689 : U32} 0xfd7037736e4fa1794a671d0278638da7/LAWS.bend seed42_first {0xfd7037736e4fa1794a671d0278638da7/lib.Prng.next_value(0xfd7037736e4fa1794a671d0278638da7/lib.Prng.seed(42)) == 11355432 : U32} 0xfd7037736e4fa1794a671d0278638da7/LAWS.bend same_seed_same_first {0xfd7037736e4fa1794a671d0278638da7/lib.Prng.next_value(0xfd7037736e4fa1794a671d0278638da7/lib.Prng.seed(7)) == 0xfd7037736e4fa1794a671d0278638da7/lib.Prng.next_value(0xfd7037736e4fa1794a671d0278638da7/lib.Prng.seed(7)) : U32} 0xfd7037736e4fa1794a671d0278638da7/LAWS.bend next_value_is_state {0xfd7037736e4fa1794a671d0278638da7/lib.Prng.next_value(0xfd7037736e4fa1794a671d0278638da7/lib.Prng.seed(42)) == 0xfd7037736e4fa1794a671d0278638da7/lib.Prng.state(0xfd7037736e4fa1794a671d0278638da7/lib.Prng.next_state(0xfd7037736e4fa1794a671d0278638da7/lib.Prng.seed(42))) : U32} 0xfd7037736e4fa1794a671d0278638da7/LAWS.bend bounded_max1_zero {0xfd7037736e4fa1794a671d0278638da7/lib.Prng.next_bounded_value(0xfd7037736e4fa1794a671d0278638da7/lib.Prng.seed(1), 1) == 0 : U32} 0xfd7037736e4fa1794a671d0278638da7/LAWS.bend bounded_max0_zero {0xfd7037736e4fa1794a671d0278638da7/lib.Prng.next_bounded_value(0xfd7037736e4fa1794a671d0278638da7/lib.Prng.seed(1), 0) == 0 : U32} 0xfd7037736e4fa1794a671d0278638da7/LAWS.bend bounded_seed42_mod100 {0xfd7037736e4fa1794a671d0278638da7/lib.Prng.next_bounded_value(0xfd7037736e4fa1794a671d0278638da7/lib.Prng.seed(42), 100) == 32 : U32} 0xff0c68fa4ce715b1f30ee5944192f0b7/LAWS.bend encode_empty {0xff0c68fa4ce715b1f30ee5944192f0b7/lib.Crc32.encode([]) == 0 : U32} 0xff0c68fa4ce715b1f30ee5944192f0b7/LAWS.bend encode_zero_octet {0xff0c68fa4ce715b1f30ee5944192f0b7/lib.Crc32.encode([0]) == 3523407757 : U32} 0xff0c68fa4ce715b1f30ee5944192f0b7/LAWS.bend encode_check_vector {0xff0c68fa4ce715b1f30ee5944192f0b7/lib.Crc32.encode([49, 50, 51, 52, 53, 54, 55, 56, 57]) == 3421780262 : U32} 0xff0c68fa4ce715b1f30ee5944192f0b7/LAWS.bend encode_hello {0xff0c68fa4ce715b1f30ee5944192f0b7/lib.Crc32.encode([104, 101, 108, 108, 111]) == 907060870 : U32} 0xff0c68fa4ce715b1f30ee5944192f0b7/LAWS.bend encode_masks_octet {0xff0c68fa4ce715b1f30ee5944192f0b7/lib.Crc32.encode([256]) == 0xff0c68fa4ce715b1f30ee5944192f0b7/lib.Crc32.encode([0]) : U32} 0xff0c68fa4ce715b1f30ee5944192f0b7/LAWS.bend finalize_update_empty {0xff0c68fa4ce715b1f30ee5944192f0b7/lib.Crc32.finalize(0xff0c68fa4ce715b1f30ee5944192f0b7/lib.Crc32.update(0xff0c68fa4ce715b1f30ee5944192f0b7/lib.Crc32.init, [])) == 0 : U32} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend array_get_after_set_same @-T:Data -> @+d:Nat -> @+t:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/array.Tree -> @+i:U32 -> @+v:T -> @+x:T -> @+hd:{Nat.is_lt(d, 32n) == True{} : Bool} -> @+hi:{Nat.is_lt(U32.to_nat(i), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/lib/common.pow2(d)) == True{} : Bool} -> @+hx:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/lib/common.nth(T, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/array.slots(T, t), U32.to_nat(i)) == Some{x} : Maybe<&2, T>} -> @+pf:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/array.perfect(T, d, t) == True{} : Bool} -> {Array.get(T, Array.set(T, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/array.thaw(T, t), i, v), i) == (0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/array.thaw(T, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/array.upd(T, d, t, U32.to_nat(i), v)), v) : Pair(Array, T)} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend array_get_after_set_other @-T:Data -> @+d:Nat -> @+t:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/array.Tree -> @+i:U32 -> @+j:U32 -> @+v:T -> @+x:T -> @+y:T -> @+hd:{Nat.is_lt(d, 32n) == True{} : Bool} -> @+hi:{Nat.is_lt(U32.to_nat(i), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/lib/common.pow2(d)) == True{} : Bool} -> @+hj:{Nat.is_lt(U32.to_nat(j), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/lib/common.pow2(d)) == True{} : Bool} -> @+ne:{Nat.is_eq(U32.to_nat(i), U32.to_nat(j)) == False{} : Bool} -> @+hx:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/lib/common.nth(T, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/array.slots(T, t), U32.to_nat(i)) == Some{x} : Maybe<&2, T>} -> @+hy:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/lib/common.nth(T, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/array.slots(T, t), U32.to_nat(j)) == Some{y} : Maybe<&2, T>} -> @+pf:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/array.perfect(T, d, t) == True{} : Bool} -> {Array.get(T, Array.set(T, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/array.thaw(T, t), i, v), j) == (0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/array.thaw(T, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/array.upd(T, d, t, U32.to_nat(i), v)), y) : Pair(Array, T)} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend array_new @-T:Data -> @+d:Nat -> @+v:T -> {Array.new(T, d, v) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/array.thaw(T, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/array.trep(T, d, v)) : Array} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_new @-T:Data -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.abs(T, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.new(T)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.new(T) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.Model} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_new_invariant @-T:Data -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.Inv(T, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.new(T)) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_with_limit @-T:Data -> @+k:Nat -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.abs(T, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.with_limit(T, k)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.with_limit(T, k) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.Model} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_step @-T:Data -> @+sh:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.Shadow -> @+op:0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Op -> @+g:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.good(T, sh) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/proof.view1(T, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.step(T, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.real(T, sh), op)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.step(T, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.abs(T, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.real(T, sh)), op) : Pair(0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.Model, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Obs)} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_step_invariant @-T:Data -> @+sh:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.Shadow -> @+op:0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Op -> @+g:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.good(T, sh) == True{} : Bool} -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.Inv(T, Pair.fst(0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.DynArray<&2, T>, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Obs, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.step(T, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.real(T, sh), op))) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_trace @-T:Data -> @+ops:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Op> -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/proof.view(T, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.run(T, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.new(T))) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.run(T, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.new(T)) : Pair(0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.Model, List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Obs>)} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_trace_invariant @-T:Data -> @+ops:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Op> -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.Inv(T, Pair.fst(0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.DynArray<&2, T>, List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Obs>, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.run(T, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.new(T)))) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_trace_limited @-T:Data -> @+k:Nat -> @+ops:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Op> -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/proof.view(T, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.run(T, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.with_limit(T, k))) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.run(T, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.with_limit(T, k)) : Pair(0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.Model, List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Obs>)} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_trace_limited_invariant @-T:Data -> @+k:Nat -> @+ops:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Op> -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.Inv(T, Pair.fst(0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.DynArray<&2, T>, List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Obs>, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.run(T, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.with_limit(T, k)))) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_new_at_u32 {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.abs(U32, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.new_at(U32)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.new(U32) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.Model} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_new_at_invariant_u32 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.Inv(U32, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.new_at(U32)) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_with_limit_at_u32 @+k:Nat -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.abs(U32, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.with_limit_at(U32, k)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.with_limit(U32, k) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.Model} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_step_at_u32 @+sh:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.Shadow -> @+op:0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Op -> @+g:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.good(U32, sh) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/proof.view1(U32, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.step_at(U32, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.real(U32, sh), op)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.step(U32, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.abs(U32, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.real(U32, sh)), op) : Pair(0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.Model, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Obs)} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_step_at_invariant_u32 @+sh:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.Shadow -> @+op:0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Op -> @+g:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.good(U32, sh) == True{} : Bool} -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.Inv(U32, Pair.fst(0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.DynArray<&2, U32>, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Obs, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.step_at(U32, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.real(U32, sh), op))) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_trace_at_u32 @+ops:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Op> -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/proof.view(U32, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.run_at(U32, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.new_at(U32))) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.run(U32, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.new(U32)) : Pair(0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.Model, List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Obs>)} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_trace_at_invariant_u32 @+ops:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Op> -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.Inv(U32, Pair.fst(0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.DynArray<&2, U32>, List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Obs>, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.run_at(U32, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.new_at(U32)))) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_trace_limited_at_u32 @+k:Nat -> @+ops:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Op> -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/proof.view(U32, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.run_at(U32, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.with_limit_at(U32, k))) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.run(U32, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.with_limit(U32, k)) : Pair(0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.Model, List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Obs>)} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_trace_limited_at_invariant_u32 @+k:Nat -> @+ops:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Op> -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.Inv(U32, Pair.fst(0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.DynArray<&2, U32>, List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Obs>, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.run_at(U32, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.with_limit_at(U32, k)))) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_new_at_nat {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.abs(Nat, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.new_at(Nat)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.new(Nat) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.Model} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_new_at_invariant_nat 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.Inv(Nat, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.new_at(Nat)) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_with_limit_at_nat @+k:Nat -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.abs(Nat, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.with_limit_at(Nat, k)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.with_limit(Nat, k) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.Model} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_step_at_nat @+sh:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.Shadow -> @+op:0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Op -> @+g:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.good(Nat, sh) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/proof.view1(Nat, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.step_at(Nat, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.real(Nat, sh), op)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.step(Nat, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.abs(Nat, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.real(Nat, sh)), op) : Pair(0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.Model, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Obs)} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_step_at_invariant_nat @+sh:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.Shadow -> @+op:0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Op -> @+g:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.good(Nat, sh) == True{} : Bool} -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.Inv(Nat, Pair.fst(0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.DynArray<&2, Nat>, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Obs, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.step_at(Nat, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.real(Nat, sh), op))) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_trace_at_nat @+ops:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Op> -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/proof.view(Nat, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.run_at(Nat, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.new_at(Nat))) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.run(Nat, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.new(Nat)) : Pair(0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.Model, List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Obs>)} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_trace_at_invariant_nat @+ops:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Op> -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.Inv(Nat, Pair.fst(0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.DynArray<&2, Nat>, List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Obs>, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.run_at(Nat, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.new_at(Nat)))) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_trace_limited_at_nat @+k:Nat -> @+ops:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Op> -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/proof.view(Nat, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.run_at(Nat, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.with_limit_at(Nat, k))) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.run(Nat, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.with_limit(Nat, k)) : Pair(0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.Model, List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Obs>)} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_trace_limited_at_invariant_nat @+k:Nat -> @+ops:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Op> -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.Inv(Nat, Pair.fst(0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.DynArray<&2, Nat>, List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Obs>, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.run_at(Nat, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.with_limit_at(Nat, k)))) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_new_at_string {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.abs(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.new_at(String)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.new(String) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.Model} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_new_at_invariant_string 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.Inv(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.new_at(String)) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_with_limit_at_string @+k:Nat -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.abs(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.with_limit_at(String, k)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.with_limit(String, k) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.Model} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_step_at_string @+sh:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.Shadow -> @+op:0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Op -> @+g:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.good(String, sh) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/proof.view1(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.step_at(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.real(String, sh), op)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.step(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.abs(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.real(String, sh)), op) : Pair(0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.Model, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Obs)} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_step_at_invariant_string @+sh:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.Shadow -> @+op:0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Op -> @+g:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.good(String, sh) == True{} : Bool} -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.Inv(String, Pair.fst(0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.DynArray<&2, String>, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Obs, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.step_at(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.real(String, sh), op))) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_trace_at_string @+ops:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Op> -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/proof.view(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.run_at(String, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.new_at(String))) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.run(String, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.new(String)) : Pair(0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.Model, List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Obs>)} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_trace_at_invariant_string @+ops:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Op> -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.Inv(String, Pair.fst(0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.DynArray<&2, String>, List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Obs>, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.run_at(String, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.new_at(String)))) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_trace_limited_at_string @+k:Nat -> @+ops:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Op> -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/proof.view(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.run_at(String, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.with_limit_at(String, k))) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.run(String, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.with_limit(String, k)) : Pair(0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/dynamic_array.Model, List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Obs>)} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend dynamic_array_trace_limited_at_invariant_string @+k:Nat -> @+ops:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Op> -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/dynamic_array/state.Inv(String, Pair.fst(0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.DynArray<&2, String>, List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/dynamic_array.Obs>, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.run_at(String, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/dynamic_array.with_limit_at(String, k)))) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend deque_u32_new {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/state.model(U32, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/state.initial(U32)) == [] : List<&2, U32>} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend deque_u32_new_is_the_constructor {0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/deque.new(U32) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/state.real(U32, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/state.initial(U32)) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/deque.Deque} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend deque_u32_step @+sh:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/state.Shadow -> @+op:0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/deque.Op -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/stepok.StepOK(U32, sh, op) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend deque_u32_shadow_unique @+a:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/state.Shadow -> @+b:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/state.Shadow -> @+e:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/state.real(U32, a) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/state.real(U32, b) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/deque.Deque} -> {a == b : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/state.Shadow} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend deque_u32_trace @+ops:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/deque.Op> -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/trace.TraceOK(U32, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/state.initial(U32)) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend deque_string_new {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/state.model(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/state.initial(String)) == [] : List<&2, String>} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend deque_string_new_is_the_constructor {0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/deque.new(String) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/state.real(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/state.initial(String)) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/deque.Deque} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend deque_string_step @+sh:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/state.Shadow -> @+op:0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/deque.Op -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/stepok.StepOK(String, sh, op) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend deque_string_shadow_unique @+a:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/state.Shadow -> @+b:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/state.Shadow -> @+e:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/state.real(String, a) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/state.real(String, b) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/deque.Deque} -> {a == b : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/state.Shadow} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend deque_string_trace @+ops:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/deque.Op> -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/trace.TraceOK(String, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/deque/state.initial(String)) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend queue_u32_new {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/state.model(U32, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/state.initial(U32)) == [] : List<&2, U32>} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend queue_u32_new_is_the_constructor {0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/queue.new(U32) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/state.real(U32, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/state.initial(U32)) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/queue.Queue} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend queue_u32_step @+sh:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/state.Shadow -> @+op:0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/queue.Op -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/steps.StepOK(U32, sh, op) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend queue_u32_shadow_unique @+a:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/state.Shadow -> @+b:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/state.Shadow -> @+e:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/state.real(U32, a) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/state.real(U32, b) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/queue.Queue} -> {a == b : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/state.Shadow} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend queue_u32_trace @+ops:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/queue.Op> -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/trace.TraceOK(U32, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/state.initial(U32)) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend queue_string_new {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/state.model(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/state.initial(String)) == [] : List<&2, String>} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend queue_string_new_is_the_constructor {0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/queue.new(String) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/state.real(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/state.initial(String)) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/queue.Queue} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend queue_string_step @+sh:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/state.Shadow -> @+op:0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/queue.Op -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/steps.StepOK(String, sh, op) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend queue_string_shadow_unique @+a:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/state.Shadow -> @+b:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/state.Shadow -> @+e:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/state.real(String, a) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/state.real(String, b) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/queue.Queue} -> {a == b : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/state.Shadow} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend queue_string_trace @+ops:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/queue.Op> -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/trace.TraceOK(String, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/queue/state.initial(String)) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend binary_heap_u32_new {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.model(U32, U32.cmp, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.initial(U32)) == [] : List<&2, U32>} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend binary_heap_u32_new_good {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.good(U32, U32.cmp, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.initial(U32)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend binary_heap_u32_new_is_the_constructor {0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/binary_heap.new(U32) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.real(U32, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.initial(U32)) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/binary_heap.Heap} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend binary_heap_u32_abstraction_of_a_real_heap @+sh:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.Shadow -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.abs(U32, U32.cmp, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.real(U32, sh)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.model(U32, U32.cmp, sh) : List<&2, U32>} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend binary_heap_string_new {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.model(String, String.order, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.initial(String)) == [] : List<&2, String>} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend binary_heap_string_new_is_the_constructor {0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/binary_heap.new(String) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.real(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.initial(String)) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/binary_heap.Heap} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend binary_heap_string_abstraction_of_a_real_heap @+sh:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.Shadow -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.abs(String, String.order, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.real(String, sh)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.model(String, String.order, sh) : List<&2, String>} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend binary_heap_u32_step @sh:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.Shadow -> @op:0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/binary_heap.Op -> @+g:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.good(U32, U32.cmp, sh) == True{} : Bool} -> @+q:Nat -> @+hq:{Nat.is_le(q, 31n) == True{} : Bool} -> @+room:{Nat.is_lt(Nat.add(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.sh_size(U32, sh), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/steps.pushcost(U32, op)), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/lib/common.pow2(q)) == True{} : Bool} -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/steps.StepOK(U32, U32.cmp, sh, op) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend binary_heap_u32_trace @+ops:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/binary_heap.Op> -> @+q:Nat -> @+hq:{Nat.is_le(q, 31n) == True{} : Bool} -> @+room:{Nat.is_lt(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/trace.pushes(U32, ops), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/lib/common.pow2(q)) == True{} : Bool} -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/trace.TraceOK(U32, U32.cmp, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.initial(U32)) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend binary_heap_u32_new_invariant 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.Inv(U32, U32.cmp, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/binary_heap.new(U32)) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend binary_heap_string_step @sh:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.Shadow -> @op:0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/binary_heap.Op -> @+g:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.good(String, String.order, sh) == True{} : Bool} -> @+q:Nat -> @+hq:{Nat.is_le(q, 31n) == True{} : Bool} -> @+room:{Nat.is_lt(Nat.add(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.sh_size(String, sh), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/steps.pushcost(String, op)), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/lib/common.pow2(q)) == True{} : Bool} -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/steps.StepOK(String, String.order, sh, op) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend binary_heap_string_trace @+ops:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/binary_heap.Op> -> @+q:Nat -> @+hq:{Nat.is_le(q, 31n) == True{} : Bool} -> @+room:{Nat.is_lt(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/trace.pushes(String, ops), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/lib/common.pow2(q)) == True{} : Bool} -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/trace.TraceOK(String, String.order, ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.initial(String)) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend binary_heap_string_new_invariant 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/binary_heap/state.Inv(String, String.order, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/binary_heap.new(String)) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend bitset_new @+n:Nat -> @+h:{Nat.is_le(n, Nat.mul(0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/lib/common.pow2(0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/bitset.depth_for(n)), 32n)) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitset/state.model(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitset/trace.initial(n)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/bitset.new(n) : List<&2, Bool>} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend bitset_new_invariant @+n:Nat -> @+h:{Nat.is_le(n, Nat.mul(0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/lib/common.pow2(0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/bitset.depth_for(n)), 32n)) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitset/state.good(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitset/trace.initial(n)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend bitset_new_is_the_constructor @+n:Nat -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/bitset.new(n) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitset/state.real(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitset/trace.initial(n)) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/bitset.Bitset} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend bitset_from_bools @+ys:List<&2, Bool> -> @+hf:{Nat.is_le(0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/bitset.bool_count(ys), Nat.mul(0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/lib/common.pow2(0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/bitset.depth_for(0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/bitset.bool_count(ys))), 32n)) == True{} : Bool} -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitset/steps.FromOK(ys) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend bitset_step @sh:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitset/state.Sh -> @op:0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/bitset.Op -> @+g:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitset/state.good(sh) == True{} : Bool} -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitset/steps.StepOK(sh, op) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend bitset_shadow_unique @+a:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitset/state.Sh -> @+b:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitset/state.Sh -> @+e:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitset/state.real(a) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitset/state.real(b) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/bitset.Bitset} -> {a == b : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitset/state.Sh} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend bitset_trace @+n:Nat -> @+ops:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/bitset.Op> -> @+h:{Nat.is_le(n, Nat.mul(0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/lib/common.pow2(0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/bitset.depth_for(n)), 32n)) == True{} : Bool} -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitset/trace.TraceOK(ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitset/trace.initial(n)) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend bitlist_new_is_the_constructor {0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/bitlist.new == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitlist/state.real(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitlist/trace.initial(None{})) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/bitlist.Bitlist} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend bitlist_new {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitlist/state.model(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitlist/trace.initial(None{})) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/bitlist.new : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/bitlist.Model} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend bitlist_with_limit @+n:Nat -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitlist/state.model(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitlist/trace.initial(Some{n})) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/bitlist.with_limit(n) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/spec/containers/bitlist.Model} bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend bitlist_step @+sh:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitlist/state.Sh -> @+op:0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/bitlist.Op -> @+g:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitlist/state.good(sh) == True{} : Bool} -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitlist/steps.StepOK(sh, op) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend bitlist_trace @+ops:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/bitlist.Op> -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitlist/trace.TraceOK(ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitlist/trace.initial(None{})) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend bitlist_trace_limited @+n:Nat -> @+ops:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/src/containers/types/bitlist.Op> -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitlist/trace.TraceOK(ops, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitlist/trace.initial(Some{n})) bend-collections-laws-containers@1.0.0.0/proofs/END_TO_END.bend bitlist_from_bools @+bs:List<&2, Bool> -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitlist/trace.FromOK(bs, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/containers/bitlist/trace.initial(None{})) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/abstraction_bindings.bend binding_head @-K:Data -> @-V:Data -> @item:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> @rest:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @same:{Some{entry} == item : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} -> contains(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.binding_cons(K, V, item, rest), entry) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/abstraction_bindings.bend binding_tail @-K:Data -> @-V:Data -> @item:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> @rest:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @member:contains(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, rest, entry) -> contains(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.binding_cons(K, V, item, rest), entry) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/abstraction_bindings.bend retains_listed_entry @-K:Data -> @-V:Data -> @xs:List<&2, Sigma<&2, &2, String, _ => Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>>> -> @+code:String -> @+entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.listed(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, xs, code, entry) -> contains(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.bindings(K, V, xs), entry) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/abstraction_bindings.bend lookup_retained_by_abstraction @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @+entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, c, code) == Some{entry} : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} -> contains(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, model_bindings(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.abstract(K, V, c)), entry) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/abstraction_bindings.bend lift_origin @-K:Data -> @-V:Data -> @stored:String -> @item:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> @tail:List<&2, Sigma<&2, &2, String, _ => Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>>> -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @source:origin(K, V, tail, entry) -> origin(K, V, (stored, item) <> tail, entry) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/abstraction_bindings.bend binding_origin @-K:Data -> @-V:Data -> @xs:List<&2, Sigma<&2, &2, String, _ => Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>>> -> @+entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @member:contains(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.bindings(K, V, xs), entry) -> origin(K, V, xs, entry) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/abstraction_bindings.bend abstraction_binding_origin @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @member:contains(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, model_bindings(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.abstract(K, V, c)), entry) -> Sigma<&2, &1, String, code => origin_at(K, V, c, code, entry)> bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/abstraction_recency.bend string_recency_faithful @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(String, V, c) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(String, V, c) == True{} : Bool} -> @identities:{cache_identities(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.string_encode, V, c) == True{} : Bool} -> @included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_oldest_available.order_in_keys(String, V, c) == True{} : Bool} -> {encode_keys(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.string_encode, model_order(String, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.abstract(String, V, c))) == native_order(String, V, c) : List<&2, String>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/abstraction_recency.bend integer_recency_faithful @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache<0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V> -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V, c) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V, c) == True{} : Bool} -> @identities:{cache_identities(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.integer_encode, V, c) == True{} : Bool} -> @included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_oldest_available.order_in_keys(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V, c) == True{} : Bool} -> {encode_keys(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.integer_encode, model_order(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.abstract(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V, c))) == native_order(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V, c) : List<&2, String>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/abstraction_size.bend enumerated_populated @-K:Data -> @-V:Data -> @tree:Map<&2, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>> -> @+acc:List<&2, Sigma<&2, &2, String, _ => Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>>> -> @+valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, tree) == True{} : Bool} -> @packed_acc:{packed(K, V, acc) == True{} : Bool} -> {packed(K, V, Map.to_list.go(&2, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>, tree, acc)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/abstraction_size.bend bindings_length @-K:Data -> @-V:Data -> @xs:List<&2, Sigma<&2, &2, String, _ => Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>>> -> @valid:{packed(K, V, xs) == True{} : Bool} -> {List.length(&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.bindings(K, V, xs)) == List.length(&2, Sigma<&2, &2, String, _ => Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>>, xs) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/abstraction_size.bend abstraction_size @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> {List.length(&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_bindings.model_bindings(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.abstract(K, V, c))) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.map_size(K, V, c) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/addition.bend bit_conservation @a:Nat -> @+b:Nat -> @x:Bool -> @y:Bool -> @c:Bool -> {Nat.add(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.bit_value(sum_bit(Bool.full_add(x, y, c))), Nat.double(Nat.add(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.bit_value(carry_bit(Bool.full_add(x, y, c))), Nat.add(a, b)))) == Nat.add(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.bit_value(c), Nat.add(Nat.add(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.bit_value(x), Nat.double(a)), Nat.add(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.bit_value(y), Nat.double(b)))) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/addition.bend lift_conservation @+bit:Bool -> @+value:Nat -> @+carry:Nat -> @+total:Nat -> @e:{Nat.add(value, carry) == total : Nat} -> {Nat.add(Nat.add(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.bit_value(bit), Nat.double(value)), Nat.double(carry)) == Nat.add(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.bit_value(bit), Nat.double(total)) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/addition.bend adc_shape @+n:Nat -> @a:Word(n) -> @b:Word(n) -> @pair:Pair(Bool, Bool) -> {Word.adc.con(n, a, b, False{}, pair) == WCon{sum_bit(pair), Word.adc(n, a, b, False{}, carry_bit(pair))} : Word(1n+n)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/addition.bend step @+n:Nat -> @+a:Word(n) -> @+b:Word(n) -> @+x:Bool -> @+y:Bool -> @+c:Bool -> @e:{Nat.add(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.unsigned(n, Word.adc(n, a, b, False{}, carry_bit(Bool.full_add(x, y, c)))), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.scale_binary(n, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.bit_value(carry_out(n, a, b, carry_bit(Bool.full_add(x, y, c)))))) == Nat.add(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.bit_value(carry_bit(Bool.full_add(x, y, c))), Nat.add(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.unsigned(n, a), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.unsigned(n, b))) : Nat} -> {Nat.add(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.unsigned(1n+n, Word.adc(1n+n, WCon{x, a}, WCon{y, b}, False{}, c)), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.scale_binary(1n+n, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.bit_value(carry_out(1n+n, WCon{x, a}, WCon{y, b}, c)))) == Nat.add(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.bit_value(c), Nat.add(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.unsigned(1n+n, WCon{x, a}), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.unsigned(1n+n, WCon{y, b}))) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/addition.bend adc_conservation @+n:Nat -> @a:Word(n) -> @b:Word(n) -> @+c:Bool -> {Nat.add(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.unsigned(n, Word.adc(n, a, b, False{}, c)), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.scale_binary(n, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.bit_value(carry_out(n, a, b, c)))) == Nat.add(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.bit_value(c), Nat.add(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.unsigned(n, a), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.unsigned(n, b))) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/addition.bend addition_conservation @+a:Word(64n) -> @+b:Word(64n) -> {Nat.add(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.unsigned(64n, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.add(a, b)), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.scale_binary(64n, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.bit_value(carry_out(64n, a, b, False{})))) == Nat.add(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.unsigned(64n, a), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.unsigned(64n, b)) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_add_capacity.bend evict_then_store_bounded @-K:Data -> @-V:Data -> @+cap:Nat -> @+table:Map<&2, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>> -> @+oldest:String -> @+rest:List<&2, String> -> @+life:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @counts:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Metrics -> @+cb:Bool -> @+code:String -> @key:K -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @bound:{Nat.is_le(1n+List.length(&2, String, rest), cap) == True{} : Bool} -> @w:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_oldest_available.available(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.State{cap, table, oldest <> rest, life, counts, cb}, oldest) -> {Nat.is_le(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.add_room(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.State{cap, table, oldest <> rest, life, counts, cb}, code, key, value, deadline, True{}))), cap) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_add_capacity.bend full_add_bounded @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @key:K -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @positive:{Nat.is_gt(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c), 0n) == True{} : Bool} -> @bound:{Nat.is_le(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, c), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c)) == True{} : Bool} -> @full:{Nat.is_ge(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, c), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c)) == True{} : Bool} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_oldest_available.order_in_keys(K, V, c) == True{} : Bool} -> {Nat.is_le(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.add_room(K, V, c, code, key, value, deadline, True{}))), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_add_capacity.bend room_ready @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @room:{Nat.is_le(1n+0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, c), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c)) == True{} : Bool} -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/recency_capacity.room_or_present(K, V, c, code) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_add_capacity.bend room_branch_bounded @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @key:K -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @full:Bool -> @decision:{Nat.is_ge(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, c), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c)) == full : Bool} -> @positive:{Nat.is_gt(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c), 0n) == True{} : Bool} -> @bound:{Nat.is_le(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, c), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c)) == True{} : Bool} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_oldest_available.order_in_keys(K, V, c) == True{} : Bool} -> {Nat.is_le(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.add_room(K, V, c, code, key, value, deadline, full))), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_add_capacity.bend found_branch_bounded @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @key:K -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> @decision:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, c, code) == found : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} -> @positive:{Nat.is_gt(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c), 0n) == True{} : Bool} -> @bound:{Nat.is_le(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, c), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c)) == True{} : Bool} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_oldest_available.order_in_keys(K, V, c) == True{} : Bool} -> @reverse:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_order.keys_in_order(K, V, c) == True{} : Bool} -> {Nat.is_le(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.add_found(K, V, c, code, key, value, deadline, found))), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_add_capacity.bend add_with_lifetime_bounded @-K:Data -> @-V:Data -> @encode:(@_:K -> String) -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+key:K -> @value:V -> @ns:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @positive:{Nat.is_gt(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c), 0n) == True{} : Bool} -> @bound:{Nat.is_le(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, c), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c)) == True{} : Bool} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_oldest_available.order_in_keys(K, V, c) == True{} : Bool} -> @reverse:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_order.keys_in_order(K, V, c) == True{} : Bool} -> {Nat.is_le(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.add_with_lifetime(K, V, encode, c, key, value, ns, now))), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_delete_membership.bend included_cons @xs:List<&2, String> -> @+head:String -> @+ys:List<&2, String> -> @+included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(xs, ys) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(xs, head <> ys) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_delete_membership.bend included_self @+xs:List<&2, String> -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(xs, xs) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_delete_membership.bend into_deleted @-V:Data -> @xs:List<&2, String> -> @+tree:Map<&2, Maybe<&2, V>> -> @+removed:String -> @+valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @+populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, tree) == True{} : Bool} -> @+included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(xs, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(Map.keys(&2, Maybe<&2, V>, tree), removed)) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(xs, Map.keys(&2, Maybe<&2, V>, Map.del(&2, Maybe<&2, V>, tree, removed))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_delete_membership.bend from_deleted @-V:Data -> @xs:List<&2, String> -> @+tree:Map<&2, Maybe<&2, V>> -> @+removed:String -> @+target:List<&2, String> -> @+valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @+populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, tree) == True{} : Bool} -> @+included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(xs, Map.keys(&2, Maybe<&2, V>, Map.del(&2, Maybe<&2, V>, tree, removed))) == True{} : Bool} -> @+filtered:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(Map.keys(&2, Maybe<&2, V>, tree), removed), target) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(xs, target) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_delete_membership.bend detach_order_in_keys @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+removed:String -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_oldest_available.order_in_keys(K, V, c) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_oldest_available.order_in_keys(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_present(K, V, c, removed, entry))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_delete_membership.bend detach_keys_in_order @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+removed:String -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_order.keys_in_order(K, V, c) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_order.keys_in_order(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_present(K, V, c, removed, entry))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_delete_membership.bend detach_present @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+removed:String -> @+entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @+valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @+populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @+included:{membership(K, V, c) == True{} : Bool} -> {membership(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_present(K, V, c, removed, entry))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_delete_membership.bend detach_found @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @removed:String -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @included:{membership(K, V, c) == True{} : Bool} -> {membership(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_found(K, V, c, removed, found))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_delete_membership.bend detach @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+removed:String -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @included:{membership(K, V, c) == True{} : Bool} -> {membership(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach(K, V, c, removed))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_delete_membership.bend detach_first @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @order:List<&2, String> -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @included:{membership(K, V, c) == True{} : Bool} -> {membership(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_first(K, V, c, order))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_delete_membership.bend detach_oldest @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @included:{membership(K, V, c) == True{} : Bool} -> {membership(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_oldest(K, V, c))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_delete_membership.bend prepare_room @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @full:Bool -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @included:{membership(K, V, c) == True{} : Bool} -> {membership(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.prepare_room(K, V, c, full))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_delete_membership.bend prepare_found @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @included:{membership(K, V, c) == True{} : Bool} -> {membership(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.prepare_found(K, V, c, found))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_delete_membership.bend prepare_add @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @included:{membership(K, V, c) == True{} : Bool} -> {membership(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.prepare_add(K, V, c, code))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_delete_membership.bend core_remove_present @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @removed:String -> @evict:Bool -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @included:{membership(K, V, c) == True{} : Bool} -> {membership(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_present(K, V, c, removed, evict, entry))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_delete_membership.bend core_remove_found @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @removed:String -> @evict:Bool -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @included:{membership(K, V, c) == True{} : Bool} -> {membership(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_found(K, V, c, removed, evict, found))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_delete_membership.bend core_remove_encoded @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+removed:String -> @evict:Bool -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @included:{membership(K, V, c) == True{} : Bool} -> {membership(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_encoded(K, V, c, removed, evict))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_delete_membership.bend core_oldest_remove @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @order:List<&2, String> -> @evict:Bool -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @included:{membership(K, V, c) == True{} : Bool} -> {membership(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.oldest_remove(K, V, c, order, evict))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_delete_membership.bend core_remove_oldest @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @evict:Bool -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @included:{membership(K, V, c) == True{} : Bool} -> {membership(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_oldest(K, V, c, evict))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_key_identity.bend string_lookup_key @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @key:String -> @original:String -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @identities:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_recency.cache_identities(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.string_encode, V, c) == True{} : Bool} -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(String, V, c, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.string_encode(key)) == Some{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Item{original, value, deadline}} : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} -> {key == original : String} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_key_identity.bend integer_lookup_key @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache<0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V> -> @key:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer -> @original:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @identities:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_recency.cache_identities(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.integer_encode, V, c) == True{} : Bool} -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V, c, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.integer_encode(key)) == Some{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Item{original, value, deadline}} : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry<0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V>>} -> {key == original : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_key_identity.bend word64_lookup_key @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @key:Word(64n) -> @original:Word(64n) -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @identities:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_recency.cache_identities(Word(64n), word64_encode, V, c) == True{} : Bool} -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(Word(64n), V, c, word64_encode(key)) == Some{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Item{original, value, deadline}} : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} -> {key == original : Word(64n)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_oldest_available.bend bridge @-K:Data -> @-V:Data -> @+cap:Nat -> @+table:Map<&2, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>> -> @+order:List<&2, String> -> @+life:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @+counts:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Metrics -> @+cb:Bool -> @+code:String -> @w:Sigma<&2, &1, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, entry => {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>, None{}, table, code) == Some{entry} : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>}> -> available(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.State{cap, table, order, life, counts, cb}, code) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_oldest_available.bend ordered_lookup @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @included:{order_in_keys(K, V, c) == True{} : Bool} -> @member:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_order.ordered(K, V, c, code) == True{} : Bool} -> available(K, V, c, code) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_oldest_available.bend head_member @+code:String -> @rest:List<&2, String> -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(code <> rest, code) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_oldest_available.bend detach_frees_slot @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @member:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_order.ordered(K, V, c, code) == True{} : Bool} -> @w:available(K, V, c, code) -> {Nat.is_le(1n+0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach(K, V, c, code))), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, c)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_oldest_available.bend oldest_frees_slot @-K:Data -> @-V:Data -> @+cap:Nat -> @+table:Map<&2, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>> -> @+code:String -> @+rest:List<&2, String> -> @+life:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @+counts:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Metrics -> @+cb:Bool -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.State{cap, table, code <> rest, life, counts, cb}) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.State{cap, table, code <> rest, life, counts, cb}) == True{} : Bool} -> @included:{order_in_keys(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.State{cap, table, code <> rest, life, counts, cb}) == True{} : Bool} -> {Nat.is_le(1n+0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_oldest(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.State{cap, table, code <> rest, life, counts, cb}))), 1n+List.length(&2, String, rest)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_order.bend lookup_is_ordered @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @+entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @included:{keys_in_order(K, V, c) == True{} : Bool} -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, c, code) == Some{entry} : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} -> {ordered(K, V, c, code) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_order.bend replacement_ready @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @included:{keys_in_order(K, V, c) == True{} : Bool} -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, c, code) == Some{entry} : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/recency_capacity.room_or_present(K, V, c, code) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_order.bend replacement_bounded @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @+original:K -> @+old:V -> @+expiry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @key:K -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @bound:{Nat.is_le(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, c), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c)) == True{} : Bool} -> @included:{keys_in_order(K, V, c) == True{} : Bool} -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, c, code) == Some{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Item{original, old, expiry}} : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} -> {Nat.is_le(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.add_found(K, V, c, code, key, value, deadline, Some{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Item{original, old, expiry}}))), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_order.bend live_read_does_not_grow @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @+entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @tracked:Bool -> @included:{keys_in_order(K, V, c) == True{} : Bool} -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, c, code) == Some{entry} : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} -> {Nat.is_le(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.read_live(K, V, c, code, entry, tracked))), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, c)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_populated.bend initial_populated @-K:Data -> @-V:Data -> @cap:Nat -> {storage_populated(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.init(K, V, cap)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_populated.bend detach_present @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @valid:{storage_populated(K, V, c) == True{} : Bool} -> {storage_populated(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_present(K, V, c, code, entry))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_populated.bend detach_found @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> @valid:{storage_populated(K, V, c) == True{} : Bool} -> {storage_populated(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_found(K, V, c, code, found))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_populated.bend detach @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @valid:{storage_populated(K, V, c) == True{} : Bool} -> {storage_populated(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach(K, V, c, code))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_populated.bend detach_first @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @order:List<&2, String> -> @valid:{storage_populated(K, V, c) == True{} : Bool} -> {storage_populated(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_first(K, V, c, order))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_populated.bend detach_oldest @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @valid:{storage_populated(K, V, c) == True{} : Bool} -> {storage_populated(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_oldest(K, V, c))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_populated.bend prepare_room @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @full:Bool -> @valid:{storage_populated(K, V, c) == True{} : Bool} -> {storage_populated(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.prepare_room(K, V, c, full))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_populated.bend prepare_found @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> @valid:{storage_populated(K, V, c) == True{} : Bool} -> {storage_populated(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.prepare_found(K, V, c, found))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_populated.bend prepare_add @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @valid:{storage_populated(K, V, c) == True{} : Bool} -> {storage_populated(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.prepare_add(K, V, c, code))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_populated.bend finish_removal @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @evict:Bool -> {storage_populated(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.finish_removal(K, V, c, evict)) == storage_populated(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_populated.bend refresh_at @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @lifetime:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @invariant:{storage_populated(K, V, c) == True{} : Bool} -> {storage_populated(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.refresh_at(K, V, c, code, entry, lifetime, now)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_populated.bend store_preserves_populated @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @key:K -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @flag:Bool -> @events:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.LruEvent> -> @invariant:{storage_populated(K, V, c) == True{} : Bool} -> {storage_populated(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.store(K, V, c, code, key, value, deadline, flag, events))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_prepare_capacity.bend zero_le @n:Nat -> {Nat.is_le(0n, n) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_prepare_capacity.bend unequal_has_room @a:Nat -> @b:Nat -> @bound:{Nat.is_le(a, b) == True{} : Bool} -> @unequal:{Nat.is_eq(a, b) == False{} : Bool} -> {Nat.is_le(1n+a, b) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_prepare_capacity.bend full_detach_room @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @positive:{Nat.is_gt(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c), 0n) == True{} : Bool} -> @bound:{Nat.is_le(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, c), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c)) == True{} : Bool} -> @full:{Nat.is_eq(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, c), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c)) == True{} : Bool} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_oldest_available.order_in_keys(K, V, c) == True{} : Bool} -> {Nat.is_le(1n+0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_oldest(K, V, c))), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_prepare_capacity.bend prepare_branch @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @full:Bool -> @decision:{Nat.is_eq(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, c), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c)) == full : Bool} -> @positive:{Nat.is_gt(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c), 0n) == True{} : Bool} -> @bound:{Nat.is_le(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, c), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c)) == True{} : Bool} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_oldest_available.order_in_keys(K, V, c) == True{} : Bool} -> {Nat.is_le(1n+0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.prepare_room(K, V, c, full))), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_prepare_capacity.bend absent_preparation_has_room @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @absent:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, c, code) == None{} : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} -> @positive:{Nat.is_gt(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c), 0n) == True{} : Bool} -> @bound:{Nat.is_le(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, c), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c)) == True{} : Bool} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_oldest_available.order_in_keys(K, V, c) == True{} : Bool} -> {Nat.is_le(1n+0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.prepare_add(K, V, c, code))), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_prepare_capacity.bend not_full_has_room @a:Nat -> @b:Nat -> @not_full:{Nat.is_ge(a, b) == False{} : Bool} -> {Nat.is_le(1n+a, b) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_refresh_identity.bend string_refresh @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @lifetime:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(String, V, c) == True{} : Bool} -> @identities:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_recency.cache_identities(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.string_encode, V, c) == True{} : Bool} -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(String, V, c, code) == Some{entry} : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_recency.cache_identities(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.string_encode, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.refresh_at(String, V, c, code, entry, lifetime, now)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_refresh_identity.bend integer_refresh @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache<0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V> -> @code:String -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry<0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V> -> @lifetime:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V, c) == True{} : Bool} -> @identities:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_recency.cache_identities(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.integer_encode, V, c) == True{} : Bool} -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V, c, code) == Some{entry} : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry<0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V>>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_recency.cache_identities(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.integer_encode, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.refresh_at(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V, c, code, entry, lifetime, now)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_refresh_identity.bend word64_refresh @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @lifetime:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(Word(64n), V, c) == True{} : Bool} -> @identities:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_recency.cache_identities(Word(64n), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_key_identity.word64_encode, V, c) == True{} : Bool} -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(Word(64n), V, c, code) == Some{entry} : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_recency.cache_identities(Word(64n), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_key_identity.word64_encode, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.refresh_at(Word(64n), V, c, code, entry, lifetime, now)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_refresh_membership.bend into_updated @-V:Data -> @xs:List<&2, String> -> @+table:Map<&2, Maybe<&2, V>> -> @+code:String -> @+value:V -> @+valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, table) == True{} : Bool} -> @+populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, table) == True{} : Bool} -> @+present:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, table), code) == True{} : Bool} -> @+included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(xs, Map.keys(&2, Maybe<&2, V>, table)) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(xs, Map.keys(&2, Maybe<&2, V>, Map.set(&2, Maybe<&2, V>, table, code, Some{value}))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_refresh_membership.bend from_updated @-V:Data -> @xs:List<&2, String> -> @+table:Map<&2, Maybe<&2, V>> -> @+code:String -> @+value:V -> @+order:List<&2, String> -> @+valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, table) == True{} : Bool} -> @+populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, table) == True{} : Bool} -> @+present:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, table), code) == True{} : Bool} -> @+included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(xs, Map.keys(&2, Maybe<&2, V>, Map.set(&2, Maybe<&2, V>, table, code, Some{value}))) == True{} : Bool} -> @+ordered:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(Map.keys(&2, Maybe<&2, V>, table), order) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(xs, order) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_refresh_membership.bend refresh_at @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @+lifetime:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @+now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @+valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @+populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @+included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_delete_membership.membership(K, V, c) == True{} : Bool} -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, c, code) == Some{entry} : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_delete_membership.membership(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.refresh_at(K, V, c, code, entry, lifetime, now)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend initial @-K:Data -> @-V:Data -> @cap:Nat -> {storage(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.init(K, V, cap)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend pack @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_delete_membership.membership(K, V, c) == True{} : Bool} -> {storage(K, V, c) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend valid @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @invariant:{storage(K, V, c) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend populated @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @invariant:{storage(K, V, c) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend membership @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @invariant:{storage(K, V, c) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_delete_membership.membership(K, V, c) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend remove_populated @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @evict:Bool -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @invariant:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_present(K, V, c, code, evict, entry))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend remove_present @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @+evict:Bool -> @+entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @+invariant:{storage(K, V, c) == True{} : Bool} -> {storage(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_present(K, V, c, code, evict, entry))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend remove_found @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @evict:Bool -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> @invariant:{storage(K, V, c) == True{} : Bool} -> {storage(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_found(K, V, c, code, evict, found))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend remove_encoded @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @evict:Bool -> @invariant:{storage(K, V, c) == True{} : Bool} -> {storage(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_encoded(K, V, c, code, evict))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend oldest_remove @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @order:List<&2, String> -> @evict:Bool -> @invariant:{storage(K, V, c) == True{} : Bool} -> {storage(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.oldest_remove(K, V, c, order, evict))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend remove_oldest @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @evict:Bool -> @invariant:{storage(K, V, c) == True{} : Bool} -> {storage(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_oldest(K, V, c, evict))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend store @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @+key:K -> @+value:V -> @+deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @+flag:Bool -> @+events:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.LruEvent> -> @+invariant:{storage(K, V, c) == True{} : Bool} -> {storage(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.store(K, V, c, code, key, value, deadline, flag, events))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend store_after_evict @-K:Data -> @-V:Data -> @code:String -> @key:K -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @step:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Step -> @invariant:{storage(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, step)) == True{} : Bool} -> {storage(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.store_after_evict(K, V, code, key, value, deadline, step))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend add_room @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @key:K -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @full:Bool -> @invariant:{storage(K, V, c) == True{} : Bool} -> {storage(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.add_room(K, V, c, code, key, value, deadline, full))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend add_found @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @key:K -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> @invariant:{storage(K, V, c) == True{} : Bool} -> {storage(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.add_found(K, V, c, code, key, value, deadline, found))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend add_with_lifetime @-K:Data -> @-V:Data -> @encode:(@_:K -> String) -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+key:K -> @value:V -> @ns:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @invariant:{storage(K, V, c) == True{} : Bool} -> {storage(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.add_with_lifetime(K, V, encode, c, key, value, ns, now))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend protocol_detach_present @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @+entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @+invariant:{storage(K, V, c) == True{} : Bool} -> {storage(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_present(K, V, c, code, entry))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend protocol_detach_found @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @+found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> @+invariant:{storage(K, V, c) == True{} : Bool} -> {storage(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_found(K, V, c, code, found))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend protocol_detach @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @+invariant:{storage(K, V, c) == True{} : Bool} -> {storage(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach(K, V, c, code))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend protocol_detach_first @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+order:List<&2, String> -> @+invariant:{storage(K, V, c) == True{} : Bool} -> {storage(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_first(K, V, c, order))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend protocol_detach_oldest @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+invariant:{storage(K, V, c) == True{} : Bool} -> {storage(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_oldest(K, V, c))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend protocol_prepare_room @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+full:Bool -> @+invariant:{storage(K, V, c) == True{} : Bool} -> {storage(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.prepare_room(K, V, c, full))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend protocol_prepare_found @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> @+invariant:{storage(K, V, c) == True{} : Bool} -> {storage(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.prepare_found(K, V, c, found))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend protocol_prepare_add @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @+invariant:{storage(K, V, c) == True{} : Bool} -> {storage(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.prepare_add(K, V, c, code))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend add @-K:Data -> @-V:Data -> @encode:(@_:K -> String) -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @key:K -> @value:V -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @invariant:{storage(K, V, c) == True{} : Bool} -> {storage(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.add(K, V, encode, c, key, value, now))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend finish_removal @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @evict:Bool -> {storage(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.finish_removal(K, V, c, evict)) == storage(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend refresh_at @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @+entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @+lifetime:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @+now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @+invariant:{storage(K, V, c) == True{} : Bool} -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, c, code) == Some{entry} : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} -> {storage(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.refresh_at(K, V, c, code, entry, lifetime, now)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_storage_preservation.bend storage_has_unique_keys @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+invariant:{storage(K, V, c) == True{} : Bool} -> {native_keys_unique(K, V, c) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_store_membership.bend equivalent_case @+xs:List<&2, String> -> @+ys:List<&2, String> -> @+query:String -> @a:Bool -> @b:Bool -> @left:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(xs, query) == a : Bool} -> @right:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(ys, query) == b : Bool} -> @forward:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(xs, ys) == True{} : Bool} -> @backward:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(ys, xs) == True{} : Bool} -> {a == b : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_store_membership.bend equivalent @+xs:List<&2, String> -> @+ys:List<&2, String> -> @+query:String -> @forward:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(xs, ys) == True{} : Bool} -> @backward:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(ys, xs) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(xs, query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(ys, query) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_store_membership.bend updated @-V:Data -> @+table:Map<&2, Maybe<&2, V>> -> @+order:List<&2, String> -> @+code:String -> @+value:V -> @+query:String -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, table) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, table) == True{} : Bool} -> @forward:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(order, Map.keys(&2, Maybe<&2, V>, table)) == True{} : Bool} -> @backward:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(Map.keys(&2, Maybe<&2, V>, table), order) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(List.append(&2, String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(order, code), [code]), query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, Map.set(&2, Maybe<&2, V>, table, code, Some{value})), query) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_store_membership.bend into_table @-V:Data -> @xs:List<&2, String> -> @+table:Map<&2, Maybe<&2, V>> -> @+order:List<&2, String> -> @+code:String -> @+value:V -> @+valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, table) == True{} : Bool} -> @+populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, table) == True{} : Bool} -> @+forward:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(order, Map.keys(&2, Maybe<&2, V>, table)) == True{} : Bool} -> @+backward:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(Map.keys(&2, Maybe<&2, V>, table), order) == True{} : Bool} -> @+included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(xs, List.append(&2, String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(order, code), [code])) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(xs, Map.keys(&2, Maybe<&2, V>, Map.set(&2, Maybe<&2, V>, table, code, Some{value}))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_store_membership.bend into_order @-V:Data -> @xs:List<&2, String> -> @+table:Map<&2, Maybe<&2, V>> -> @+order:List<&2, String> -> @+code:String -> @+value:V -> @+valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, table) == True{} : Bool} -> @+populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, table) == True{} : Bool} -> @+forward:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(order, Map.keys(&2, Maybe<&2, V>, table)) == True{} : Bool} -> @+backward:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(Map.keys(&2, Maybe<&2, V>, table), order) == True{} : Bool} -> @+included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(xs, Map.keys(&2, Maybe<&2, V>, Map.set(&2, Maybe<&2, V>, table, code, Some{value}))) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(xs, List.append(&2, String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(order, code), [code])) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/cache_store_membership.bend store @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @+key:K -> @+value:V -> @+deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @flag:Bool -> @events:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.LruEvent> -> @+valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @+populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_populated.storage_populated(K, V, c) == True{} : Bool} -> @+included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_delete_membership.membership(K, V, c) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_delete_membership.membership(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.store(K, V, c, code, key, value, deadline, flag, events))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/capacity_preservation.bend remove_present @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @evict:Bool -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_present(K, V, c, code, evict, entry))) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/capacity_preservation.bend remove_found @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @evict:Bool -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_found(K, V, c, code, evict, found))) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/capacity_preservation.bend oldest_remove @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @order:List<&2, String> -> @evict:Bool -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.oldest_remove(K, V, c, order, evict))) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/capacity_preservation.bend remove_oldest @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @evict:Bool -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_oldest(K, V, c, evict))) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/capacity_preservation.bend store @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @key:K -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @flag:Bool -> @events:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.LruEvent> -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.store(K, V, c, code, key, value, deadline, flag, events))) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/counter.bend scale_zero @n:Nat -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.scale_binary(n, 0n) == 0n : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/counter.bend increment_conservation @+n:Nat -> @w:Word(n) -> {Nat.add(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.unsigned(n, Word.inc(n, w)), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.scale_binary(n, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.bit_value(carry(n, w)))) == 1n+0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.unsigned(n, w) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/counter.bend counter_conservation @+w:Word(64n) -> {Nat.add(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.unsigned(64n, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.inc(w)), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.scale_binary(64n, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.bit_value(carry(64n, w)))) == 1n+0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.unsigned(64n, w) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend initial @-K:Data -> @-V:Data -> @cap:Nat -> {flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.init(K, V, cap)) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend detach_found @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> {step_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_found(K, V, c, code, found)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend detach @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> {step_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach(K, V, c, code)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend detach_first @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @order:List<&2, String> -> {step_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_first(K, V, c, order)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend detach_oldest @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> {step_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_oldest(K, V, c)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend finish_removal @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @evict:Bool -> {flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.finish_removal(K, V, c, evict)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend finish_miss @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @tracked:Bool -> {flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.finish_miss(K, V, c, tracked)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend store @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @key:K -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @found:Bool -> @events:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.LruEvent> -> {step_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.store(K, V, c, code, key, value, deadline, found, events)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend read_live @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @tracked:Bool -> {step_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.read_live(K, V, c, code, entry, tracked)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend refresh_at @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @lifetime:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> {flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.refresh_at(K, V, c, code, entry, lifetime, now)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend set_lifetime @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @lifetime:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> {flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.set_lifetime(K, V, c, lifetime)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend clear_metrics @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> {flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.clear_metrics(K, V, c)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend prepare_room @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @full:Bool -> {step_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.prepare_room(K, V, c, full)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend prepare_found @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> {step_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.prepare_found(K, V, c, found)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend prepare_add @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> {step_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.prepare_add(K, V, c, code)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend remove_found @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @evict:Bool -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> {step_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_found(K, V, c, code, evict, found)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend remove_encoded @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @evict:Bool -> {step_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_encoded(K, V, c, code, evict)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend oldest_remove @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @order:List<&2, String> -> @evict:Bool -> {step_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.oldest_remove(K, V, c, order, evict)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend remove_oldest @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @evict:Bool -> {step_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_oldest(K, V, c, evict)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend store_after_evict @-K:Data -> @-V:Data -> @code:String -> @key:K -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @+step:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Step -> {step_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.store_after_evict(K, V, code, key, value, deadline, step)) == step_flag(K, V, step) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend add_room @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @key:K -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @full:Bool -> {step_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.add_room(K, V, c, code, key, value, deadline, full)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend add_found @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @key:K -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> {step_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.add_found(K, V, c, code, key, value, deadline, found)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend add_with_lifetime @-K:Data -> @-V:Data -> @encode:(@_:K -> String) -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+key:K -> @value:V -> @ns:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> {step_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.add_with_lifetime(K, V, encode, c, key, value, ns, now)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend expired_read @-K:Data -> @-V:Data -> @s:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Step -> {read_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.expired_read(K, V, s)) == step_flag(K, V, s) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend decide_read @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @tracked:Bool -> @expired:Bool -> {read_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.decide_read(K, V, c, code, entry, tracked, expired)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend read_found @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @tracked:Bool -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> {read_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.read_found(K, V, c, code, now, tracked, found)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend read @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @tracked:Bool -> {read_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.read(K, V, c, code, now, tracked)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend refresh_prepare_found @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> {step_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.refresh_prepare_found(K, V, c, code, found)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend refresh_prepare @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> {step_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.refresh_prepare(K, V, c, code)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend complete @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @kind:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.Mode -> {aggregate_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.complete(K, V, c, kind)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend need_clock @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @remaining:Nat -> @kind:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.Mode -> @finite:Bool -> {aggregate_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.need_clock(K, V, c, remaining, kind, finite)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend aggregate_next @-K:Data -> @-V:Data -> @remaining:Nat -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @kind:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.Mode -> {aggregate_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.aggregate_next(K, V, remaining, c, kind)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend after_removal @-K:Data -> @-V:Data -> @remaining:Nat -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @kind:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.Mode -> {aggregate_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.after_removal(K, V, remaining, c, kind)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend clock_decide @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @remaining:Nat -> @kind:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.Mode -> @expired:Bool -> {aggregate_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.clock_decide(K, V, c, remaining, kind, expired)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend clock_entry @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @remaining:Nat -> @kind:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.Mode -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @entry:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> {aggregate_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.clock_entry(K, V, c, remaining, kind, now, entry)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/disabled.bend after_clock @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @remaining:Nat -> @kind:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.Mode -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> {aggregate_flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.after_clock(K, V, c, remaining, kind, now)) == flag(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend detach_present @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @+entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @disabled:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/disabled.flag(K, V, c) == False{} : Bool} -> empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_present(K, V, c, code, entry)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend detach_found @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> @disabled:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/disabled.flag(K, V, c) == False{} : Bool} -> empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_found(K, V, c, code, found)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend detach @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @disabled:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/disabled.flag(K, V, c) == False{} : Bool} -> empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach(K, V, c, code)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend detach_first @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @order:List<&2, String> -> @disabled:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/disabled.flag(K, V, c) == False{} : Bool} -> empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_first(K, V, c, order)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend detach_oldest @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @disabled:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/disabled.flag(K, V, c) == False{} : Bool} -> empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_oldest(K, V, c)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend prepare_room @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @full:Bool -> @disabled:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/disabled.flag(K, V, c) == False{} : Bool} -> empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.prepare_room(K, V, c, full)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend prepare_found @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> @disabled:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/disabled.flag(K, V, c) == False{} : Bool} -> empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.prepare_found(K, V, c, found)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend prepare_add @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @disabled:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/disabled.flag(K, V, c) == False{} : Bool} -> empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.prepare_add(K, V, c, code)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend live @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @tracked:Bool -> empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.read_live(K, V, c, code, entry, tracked)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend expired @-K:Data -> @-V:Data -> @step:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Step -> @no_events:empty(K, V, step) -> read_empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.expired_read(K, V, step)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend decide @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @tracked:Bool -> @expired:Bool -> @disabled:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/disabled.flag(K, V, c) == False{} : Bool} -> read_empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.decide_read(K, V, c, code, entry, tracked, expired)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend read_found @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @tracked:Bool -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> @disabled:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/disabled.flag(K, V, c) == False{} : Bool} -> read_empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.read_found(K, V, c, code, now, tracked, found)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend read @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @tracked:Bool -> @disabled:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/disabled.flag(K, V, c) == False{} : Bool} -> read_empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.read(K, V, c, code, now, tracked)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend complete @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @kind:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.Mode -> aggregate_empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.complete(K, V, c, kind)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend need_clock @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @remaining:Nat -> @kind:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.Mode -> @finite:Bool -> aggregate_empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.need_clock(K, V, c, remaining, kind, finite)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend aggregate_next @-K:Data -> @-V:Data -> @remaining:Nat -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @kind:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.Mode -> @disabled:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/disabled.flag(K, V, c) == False{} : Bool} -> aggregate_empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.aggregate_next(K, V, remaining, c, kind)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend clock_decide @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @remaining:Nat -> @kind:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.Mode -> @expired:Bool -> @disabled:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/disabled.flag(K, V, c) == False{} : Bool} -> aggregate_empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.clock_decide(K, V, c, remaining, kind, expired)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend clock_entry @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @remaining:Nat -> @kind:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.Mode -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @entry:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> @disabled:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/disabled.flag(K, V, c) == False{} : Bool} -> aggregate_empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.clock_entry(K, V, c, remaining, kind, now, entry)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend after_clock @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @remaining:Nat -> @kind:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.Mode -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @disabled:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/disabled.flag(K, V, c) == False{} : Bool} -> aggregate_empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.after_clock(K, V, c, remaining, kind, now)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend after_removal @-K:Data -> @-V:Data -> @remaining:Nat -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @kind:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.Mode -> @disabled:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/disabled.flag(K, V, c) == False{} : Bool} -> aggregate_empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.after_removal(K, V, remaining, c, kind)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend refresh_found @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.refresh_prepare_found(K, V, c, code, found)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend refresh_prepare @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.refresh_prepare(K, V, c, code)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend remove_present @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @evict:Bool -> @+entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @disabled:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/disabled.flag(K, V, c) == False{} : Bool} -> empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_present(K, V, c, code, evict, entry)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend remove_found @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @evict:Bool -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> @disabled:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/disabled.flag(K, V, c) == False{} : Bool} -> empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_found(K, V, c, code, evict, found)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend oldest_remove @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @order:List<&2, String> -> @evict:Bool -> @disabled:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/disabled.flag(K, V, c) == False{} : Bool} -> empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.oldest_remove(K, V, c, order, evict)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend remove_oldest @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @evict:Bool -> @disabled:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/disabled.flag(K, V, c) == False{} : Bool} -> empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_oldest(K, V, c, evict)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend store @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @key:K -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @flag:Bool -> @events:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.LruEvent> -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_events(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.store(K, V, c, code, key, value, deadline, flag, events)) == events : List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.LruEvent>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend after_evict @-K:Data -> @-V:Data -> @code:String -> @key:K -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @step:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Step -> @no_events:empty(K, V, step) -> empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.store_after_evict(K, V, code, key, value, deadline, step)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend add_room @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @key:K -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @full:Bool -> @disabled:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/disabled.flag(K, V, c) == False{} : Bool} -> empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.add_room(K, V, c, code, key, value, deadline, full)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend add_found @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @key:K -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> @disabled:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/disabled.flag(K, V, c) == False{} : Bool} -> empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.add_found(K, V, c, code, key, value, deadline, found)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/empty_events.bend add_with_lifetime @-K:Data -> @-V:Data -> @encode:(@_:K -> String) -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+key:K -> @value:V -> @ns:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @disabled:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/disabled.flag(K, V, c) == False{} : Bool} -> empty(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.add_with_lifetime(K, V, encode, c, key, value, ns, now)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/enumeration_suffix.bend append_cons @-A:Data -> @xs:List<&2, A> -> @+head:A -> @+tail:List<&2, A> -> {List.append(&2, A, xs, head <> tail) == List.append(&2, A, List.append(&2, A, xs, [head]), tail) : List<&2, A>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/enumeration_suffix.bend listed_prefix @-V:Data -> @prefix:List<&2, Sigma<&2, &2, String, _ => Maybe<&2, V>>> -> @xs:List<&2, Sigma<&2, &2, String, _ => Maybe<&2, V>>> -> @key:String -> @value:V -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.listed(V, xs, key, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.listed(V, List.append(&2, Sigma<&2, &2, String, _ => Maybe<&2, V>>, prefix, xs), key, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/enumeration_suffix.bend lookup @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @+entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.listed(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, entries(K, V, c), code, entry) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, c, code) == Some{entry} : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/invariants.bend initial_representation @-V:Data -> @capacity_predecessor:Nat -> {representation(String, string_identity, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.init(String, V, 1n+capacity_predecessor)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/invariants.bend skipped_prefix_rejected {critbit(Nat, MNode{33n, MLeaf{"", 0n}, MLeaf{"aa", 1n}}) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/invariants.bend lookup_preserves_critbit @-V:Data -> @+d:V -> @+m:Map<&2, V> -> @+key:String -> {critbit(V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/native_map.lookup_map(V, Map.get(V, d, m, key))) == critbit(V, m) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bits.bend padded @+n:Nat -> @w:Word(n) -> @index:Nat -> {nth(1n+n, Word.shr.pad(n, w), index) == nth(n, w, index) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bits.bend shifted @+n:Nat -> @w:Word(n) -> @index:Nat -> {nth(n, Word.shr(n, w), index) == nth(n, w, 1n+index) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bits.bend shifted_u32 @x:U32 -> @index:Nat -> {at(U32.shr(x), index) == at(x, 1n+index) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bits.bend shift_front @+x:U32 -> @n:Nat -> {U32.shrn(x, 1n+n) == U32.shrn(U32.shr(x), n) : U32} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bits.bend low_shift @index:Nat -> @+x:U32 -> {at(U32.shrn(x, index), 0n) == at(x, index) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bits.bend and_zero @+n:Nat -> @w:Word(n) -> {Word.and(n, w, Word.zero(n)) == Word.zero(n) : Word(n)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bits.bend low_mask @x:U32 -> {U32.is_ne(U32.and(x, 1), 0) == at(x, 0n) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bits.bend native_bit @+x:U32 -> @+index:Nat -> {Map.bit.u(x, index) == at(x, index) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bits.bend xor_bit @+n:Nat -> @a:Word(n) -> @b:Word(n) -> @index:Nat -> {nth(n, Word.xor(n, a, b), index) == Bool.xor(nth(n, a, index), nth(n, b, index)) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bits.bend xor_u32 @a:U32 -> @b:U32 -> @index:Nat -> {at(U32.xor(a, b), index) == Bool.xor(at(a, index), at(b, index)) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bits.bend native_xor @+a:U32 -> @+b:U32 -> @+index:Nat -> {Map.bit.u(U32.xor(a, b), index) == Bool.xor(Map.bit.u(a, index), Map.bit.u(b, index)) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend recursive_bit_key @c:Char -> @r:Pair(String, Bool) -> {routed_key(Map.bit.go.rec(c, r)) == SCon{c, routed_key(r)} : String} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend bit_go_preserves_key @key:String -> @+character:Nat -> @+offset:Nat -> {routed_key(Map.bit.go(key, character, offset)) == key : String} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend bit_at_preserves_key @key:String -> @coordinates:Pair(Nat, Nat) -> {routed_key(Map.bit.at(key, coordinates)) == key : String} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend bit_preserves_key @key:String -> @position:Nat -> {routed_key(Map.bit(key, position)) == key : String} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend get_go_bridge @-V:Data -> @d:V -> @+p:Nat -> @lo:Map<&2, V> -> @hi:Map<&2, V> -> @kb:Pair(String, Bool) -> {Map.get.go(V, MNode{p, lo, hi}, d, kb) == get_bit(V, d, lo, hi, p, kb) : Pair(Map<&2, V>, V)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend get_node @-V:Data -> @d:V -> @+p:Nat -> @lo:Map<&2, V> -> @hi:Map<&2, V> -> @key:String -> {Map.get(V, d, MNode{p, lo, hi}, key) == get_bit(V, d, lo, hi, p, Map.bit(key, p)) : Pair(Map<&2, V>, V)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend has_go_bridge @-a:Quant -> @-V:Kind(a) -> @+p:Nat -> @lo:Map -> @hi:Map -> @kb:Pair(String, Bool) -> {Map.has.go(a, V, MNode{p, lo, hi}, kb) == has_bit(a, V, lo, hi, p, kb) : Pair(Map, Bool)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend has_node @-a:Quant -> @-V:Kind(a) -> @+p:Nat -> @lo:Map -> @hi:Map -> @key:String -> {Map.has(a, V, MNode{p, lo, hi}, key) == has_bit(a, V, lo, hi, p, Map.bit(key, p)) : Pair(Map, Bool)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend put_go_bridge @-a:Quant -> @-V:Kind(a) -> @x:V -> @+p:Nat -> @lo:Map -> @hi:Map -> @kb:Pair(String, Bool) -> {Map.put.go(a, V, MNode{p, lo, hi}, x, kb) == put_bit(a, V, x, p, lo, hi, kb) : Map} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend put_node @-a:Quant -> @-V:Kind(a) -> @x:V -> @+p:Nat -> @lo:Map -> @hi:Map -> @key:String -> {Map.put(a, V, MNode{p, lo, hi}, key, x) == put_bit(a, V, x, p, lo, hi, Map.bit(key, p)) : Map} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend pop_go_bridge @-a:Quant -> @-V:Kind(a) -> @+p:Nat -> @lo:Map -> @hi:Map -> @kb:Pair(String, Bool) -> {Map.pop.go(a, V, MNode{p, lo, hi}, kb) == pop_bit(a, V, lo, hi, p, kb) : Pair(Map, Maybe)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend pop_node @-a:Quant -> @-V:Kind(a) -> @+p:Nat -> @lo:Map -> @hi:Map -> @key:String -> {Map.pop(a, V, MNode{p, lo, hi}, key) == pop_bit(a, V, lo, hi, p, Map.bit(key, p)) : Pair(Map, Maybe)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend seek_go_bridge @-a:Quant -> @-V:Kind(a) -> @+p:Nat -> @lo:Map -> @hi:Map -> @kb:Pair(String, Bool) -> {Map.seek.go(a, V, MNode{p, lo, hi}, kb) == seek_bit(a, V, lo, hi, p, kb) : Pair(Map, Pair(String, Maybe<&2, String>))} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend seek_node @-a:Quant -> @-V:Kind(a) -> @+p:Nat -> @lo:Map -> @hi:Map -> @key:String -> {Map.seek(a, V, MNode{p, lo, hi}, key) == seek_bit(a, V, lo, hi, p, Map.bit(key, p)) : Pair(Map, Pair(String, Maybe<&2, String>))} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend ins_splice_bridge @-a:Quant -> @-V:Kind(a) -> @+q:Nat -> @lo:Map -> @hi:Map -> @x:V -> @+p:Nat -> @key:String -> @kb:Pair(String, Bool) -> @hk:{routed_key(kb) == key : String} -> {Map.ins.go(a, V, MNode{q, lo, hi}, x, p, kb, False{}) == Map.ins.splice(a, V, p, key, x, MNode{q, lo, hi}) : Map} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend ins_deep_bridge @-a:Quant -> @-V:Kind(a) -> @+q:Nat -> @lo:Map -> @hi:Map -> @x:V -> @+p:Nat -> @kb:Pair(String, Bool) -> {Map.ins.go(a, V, MNode{q, lo, hi}, x, p, kb, True{}) == ins_deep(a, V, x, lo, hi, p, q, kb) : Map} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend ins_t @-a:Quant -> @-V:Kind(a) -> @+pos:Nat -> @lo:Map -> @hi:Map -> @+key:String -> @x:V -> @+p:Nat -> @t:Bool -> {Map.ins.go(a, V, MNode{pos, lo, hi}, x, p, Map.bit(key, pos), t) == ins_if(a, V, key, x, lo, hi, pos, p, t) : Map} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend ins_node @-a:Quant -> @-V:Kind(a) -> @+pos:Nat -> @lo:Map -> @hi:Map -> @+key:String -> @x:V -> @+p:Nat -> {Map.ins(a, V, MNode{pos, lo, hi}, key, x, p) == ins_if(a, V, key, x, lo, hi, pos, p, Nat.is_lt(pos, p)) : Map} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_character_prefix.bend earlier_index @+scan:Nat -> @+index:Nat -> @+bound:{Nat.is_le(scan, 32n) == True{} : Bool} -> @earlier:{Nat.is_lt(1n+index, Nat.sub(33n, scan)) == True{} : Bool} -> {Nat.is_le(scan, Nat.sub(31n, index)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_character_prefix.bend word_above_scan @+a:U32 -> @+b:U32 -> @+index:Nat -> @bound:{Nat.is_le(Map.msb.u(32n, U32.xor(a, b)), index) == True{} : Bool} -> {Bool.xor(Map.bit.u(a, index), Map.bit.u(b, index)) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_character_prefix.bend native_character_prefix @+a:U32 -> @+b:U32 -> @offset:Nat -> @earlier:{Nat.is_lt(offset, Map.diff.chr(U32.xor(a, b))) == True{} : Bool} -> {Bool.xor(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_difference_char.bit(Map.bit.chr(Chr{a}, offset)), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_difference_char.bit(Map.bit.chr(Chr{b}, offset))) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_critbit_parts.bend node_parts @-V:Data -> @+p:Nat -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+e:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, MNode{p, lo, hi}) == True{} : Bool} -> Pair({0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, MNode{p, lo, hi}, MNode{p, lo, hi}, p) == True{} : Bool}, Pair({0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.nonempty(V, lo) == True{} : Bool}, Pair({0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.nonempty(V, hi) == True{} : Bool}, Pair({0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, lo, p) == True{} : Bool}, Pair({0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, hi, p) == True{} : Bool}, Pair({0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, lo, p, False{}) == True{} : Bool}, Pair({0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, hi, p, True{}) == True{} : Bool}, Pair({0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, lo) == True{} : Bool}, {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, hi) == True{} : Bool})))))))) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_critbit_parts.bend node_valid @-V:Data -> @+p:Nat -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @e0:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, MNode{p, lo, hi}, MNode{p, lo, hi}, p) == True{} : Bool} -> @e1:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.nonempty(V, lo) == True{} : Bool} -> @e2:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.nonempty(V, hi) == True{} : Bool} -> @e3:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, lo, p) == True{} : Bool} -> @e4:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, hi, p) == True{} : Bool} -> @e5:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, lo, p, False{}) == True{} : Bool} -> @e6:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, hi, p, True{}) == True{} : Bool} -> @e7:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, lo) == True{} : Bool} -> @e8:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, hi) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, MNode{p, lo, hi}) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_below.bend strict_transitive @+a:Nat -> @+b:Nat -> @+c:Nat -> @ab:{Nat.is_lt(a, b) == True{} : Bool} -> @bc:{Nat.is_lt(b, c) == True{} : Bool} -> {Nat.is_lt(a, c) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_below.bend lower_parent @-V:Data -> @tree:Map<&2, V> -> @+parent:Nat -> @+p:Nat -> @lower:{Nat.is_lt(parent, p) == True{} : Bool} -> @below:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, tree, p) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, tree, parent) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_below.bend low @-V:Data -> @+p:Nat -> @+parent:Nat -> @hi:Map<&2, V> -> @r:Pair(Map<&2, V>, Maybe<&2, V>) -> @lower:{Nat.is_lt(parent, p) == True{} : Bool} -> @below:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, hi, p) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, Map.del.fin(&2, V, Map.pop.lo(&2, V, p, hi, r)), parent) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_below.bend high @-V:Data -> @+p:Nat -> @+parent:Nat -> @lo:Map<&2, V> -> @r:Pair(Map<&2, V>, Maybe<&2, V>) -> @lower:{Nat.is_lt(parent, p) == True{} : Bool} -> @below:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, lo, p) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, Map.del.fin(&2, V, Map.pop.hi(&2, V, p, lo, r)), parent) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_below.bend leaf @-V:Data -> @value:V -> @key:String -> @stored:String -> @tag:Cmp -> @parent:Nat -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, Map.del.fin(&2, V, Map.pop.leaf(&2, V, value, ((key, stored), tag))), parent) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_below.bend branch @-V:Data -> @+p:Nat -> @+parent:Nat -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+key:String -> @bit:Bool -> @route:{Map.bit(key, p) == (key, bit) : Pair(String, Bool)} -> @lower:{Nat.is_lt(parent, p) == True{} : Bool} -> @left:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, lo, p) == True{} : Bool} -> @right:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, hi, p) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, Map.del(&2, V, MNode{p, lo, hi}, key), parent) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_below.bend from_parts @-V:Data -> @+p:Nat -> @+parent:Nat -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+key:String -> @below:{Nat.is_lt(parent, p) == True{} : Bool} -> @parts:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_critbit_parts.NodeFacts(V, p, lo, hi) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, Map.del(&2, V, MNode{p, lo, hi}, key), parent) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_below.bend preserves_below @-V:Data -> @tree:Map<&2, V> -> @+key:String -> @+parent:Nat -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, tree) == True{} : Bool} -> @below:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, tree, parent) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, Map.del(&2, V, tree, key), parent) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_common.bend conjunction @a:Bool -> @b:Bool -> @left:{a == True{} : Bool} -> @right:{b == True{} : Bool} -> {Bool.and(a, b) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_common.bend low @-V:Data -> @p:Nat -> @+hi:Map<&2, V> -> @r:Pair(Map<&2, V>, Maybe<&2, V>) -> @+whole:Map<&2, V> -> @+limit:Nat -> @left:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, Map.del.fin(&2, V, r), whole, limit) == True{} : Bool} -> @right:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, hi, whole, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, Map.del.fin(&2, V, Map.pop.lo(&2, V, p, hi, r)), whole, limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_common.bend high @-V:Data -> @p:Nat -> @+lo:Map<&2, V> -> @r:Pair(Map<&2, V>, Maybe<&2, V>) -> @+whole:Map<&2, V> -> @+limit:Nat -> @left:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, lo, whole, limit) == True{} : Bool} -> @right:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, Map.del.fin(&2, V, r), whole, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, Map.del.fin(&2, V, Map.pop.hi(&2, V, p, lo, r)), whole, limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_common.bend leaf @-V:Data -> @value:V -> @key:String -> @stored:String -> @c:Cmp -> @whole:Map<&2, V> -> @limit:Nat -> @route:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, stored, whole, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, Map.del.fin(&2, V, Map.pop.leaf(&2, V, value, ((key, stored), c))), whole, limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_common.bend branch @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @bit:Bool -> @e:{Map.bit(key, p) == (key, bit) : Pair(String, Bool)} -> @+whole:Map<&2, V> -> @+limit:Nat -> @left:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, lo, whole, limit) == True{} : Bool} -> @right:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, hi, whole, limit) == True{} : Bool} -> @lp:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, lo, whole, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, Map.del(&2, V, lo, key), whole, limit) == True{} : Bool}) -> @hp:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, hi, whole, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, Map.del(&2, V, hi, key), whole, limit) == True{} : Bool}) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, Map.del(&2, V, MNode{p, lo, hi}, key), whole, limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_common.bend preserves_rows @-V:Data -> @tree:Map<&2, V> -> @+key:String -> @+whole:Map<&2, V> -> @+limit:Nat -> @+routes:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, tree, whole, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, Map.del(&2, V, tree, key), whole, limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_common.bend preserves_columns @-V:Data -> @tree:Map<&2, V> -> @+whole:Map<&2, V> -> @+key:String -> @+limit:Nat -> @+proof:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, tree, whole, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, tree, Map.del(&2, V, whole, key), limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_common.bend preserves_common_prefix @-V:Data -> @+tree:Map<&2, V> -> @+whole:Map<&2, V> -> @+key:String -> @+limit:Nat -> @proof:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, tree, whole, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, Map.del(&2, V, tree, key), Map.del(&2, V, whole, key), limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_critbit.bend low @-V:Data -> @+p:Nat -> @+hi:Map<&2, V> -> @r:Pair(Map<&2, V>, Maybe<&2, V>) -> @prefix:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, Map.del.fin(&2, V, Map.pop.lo(&2, V, p, hi, r)), Map.del.fin(&2, V, Map.pop.lo(&2, V, p, hi, r)), p) == True{} : Bool} -> @other_nonempty:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.nonempty(V, hi) == True{} : Bool} -> @lb:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, Map.del.fin(&2, V, r), p) == True{} : Bool} -> @hb:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, hi, p) == True{} : Bool} -> @lr:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, Map.del.fin(&2, V, r), p, False{}) == True{} : Bool} -> @hr:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, hi, p, True{}) == True{} : Bool} -> @lv:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.del.fin(&2, V, r)) == True{} : Bool} -> @hv:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, hi) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.del.fin(&2, V, Map.pop.lo(&2, V, p, hi, r))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_critbit.bend high @-V:Data -> @+p:Nat -> @+lo:Map<&2, V> -> @r:Pair(Map<&2, V>, Maybe<&2, V>) -> @prefix:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, Map.del.fin(&2, V, Map.pop.hi(&2, V, p, lo, r)), Map.del.fin(&2, V, Map.pop.hi(&2, V, p, lo, r)), p) == True{} : Bool} -> @other_nonempty:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.nonempty(V, lo) == True{} : Bool} -> @lb:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, lo, p) == True{} : Bool} -> @hb:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, Map.del.fin(&2, V, r), p) == True{} : Bool} -> @lr:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, lo, p, False{}) == True{} : Bool} -> @hr:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, Map.del.fin(&2, V, r), p, True{}) == True{} : Bool} -> @lv:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, lo) == True{} : Bool} -> @hv:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.del.fin(&2, V, r)) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.del.fin(&2, V, Map.pop.hi(&2, V, p, lo, r))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_critbit.bend leaf @-V:Data -> @value:V -> @key:String -> @stored:String -> @tag:Cmp -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.del.fin(&2, V, Map.pop.leaf(&2, V, value, ((key, stored), tag)))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_critbit.bend branch @-V:Data -> @+p:Nat -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+key:String -> @bit:Bool -> @+route:{Map.bit(key, p) == (key, bit) : Pair(String, Bool)} -> @parts:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_critbit_parts.NodeFacts(V, p, lo, hi) -> @lp:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, lo) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.del(&2, V, lo, key)) == True{} : Bool}) -> @hp:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, hi) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.del(&2, V, hi, key)) == True{} : Bool}) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.del(&2, V, MNode{p, lo, hi}, key)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_critbit.bend preserves_critbit @-V:Data -> @tree:Map<&2, V> -> @+key:String -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, tree) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.del(&2, V, tree, key)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_frame.bend collapse_low @-V:Data -> @p:Nat -> @hi:Map<&2, Maybe<&2, V>> -> @r:Pair(Map<&2, Maybe<&2, V>>, Maybe<&2, Maybe<&2, V>>) -> @key:String -> @value:V -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, MNode{p, Map.del.fin(&2, Maybe<&2, V>, r), hi}, key, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.del.fin(&2, Maybe<&2, V>, Map.pop.lo(&2, Maybe<&2, V>, p, hi, r)), key, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_frame.bend collapse_high @-V:Data -> @p:Nat -> @lo:Map<&2, Maybe<&2, V>> -> @r:Pair(Map<&2, Maybe<&2, V>>, Maybe<&2, Maybe<&2, V>>) -> @key:String -> @value:V -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, MNode{p, lo, Map.del.fin(&2, Maybe<&2, V>, r)}, key, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.del.fin(&2, Maybe<&2, V>, Map.pop.hi(&2, Maybe<&2, V>, p, lo, r)), key, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_frame.bend leaf_case @-V:Data -> @item:Maybe<&2, V> -> @+removed:String -> @+stored:String -> @c:Cmp -> @comparison:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/string_compare.comparison_tag(String, String.cmp(removed, stored)) == c : Cmp} -> @+key:String -> @value:V -> @distinct:different(key, removed) -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, MLeaf{stored, item}, key, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.del.fin(&2, Maybe<&2, V>, Map.pop.leaf(&2, Maybe<&2, V>, item, ((removed, stored), c))), key, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_frame.bend selected_low @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+p:Nat -> @+removed:String -> @+key:String -> @+value:V -> @distinct:different(key, removed) -> @recurse:(@_:different(key, removed) -> @_:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, lo, key, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.del(&2, Maybe<&2, V>, lo, removed), key, value)) -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, MNode{p, lo, hi}, key, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.del.fin(&2, Maybe<&2, V>, Map.pop.lo(&2, Maybe<&2, V>, p, hi, Map.pop(&2, Maybe<&2, V>, lo, removed))), key, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_frame.bend selected_high @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+p:Nat -> @+removed:String -> @+key:String -> @+value:V -> @distinct:different(key, removed) -> @recurse:(@_:different(key, removed) -> @_:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, hi, key, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.del(&2, Maybe<&2, V>, hi, removed), key, value)) -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, MNode{p, lo, hi}, key, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.del.fin(&2, Maybe<&2, V>, Map.pop.hi(&2, Maybe<&2, V>, p, lo, Map.pop(&2, Maybe<&2, V>, hi, removed))), key, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_frame.bend branch @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+p:Nat -> @+removed:String -> @bit:Bool -> @e:{Map.bit(removed, p) == (removed, bit) : Pair(String, Bool)} -> @+key:String -> @+value:V -> @distinct:different(key, removed) -> @lp:(@_:different(key, removed) -> @_:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, lo, key, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.del(&2, Maybe<&2, V>, lo, removed), key, value)) -> @hp:(@_:different(key, removed) -> @_:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, hi, key, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.del(&2, Maybe<&2, V>, hi, removed), key, value)) -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, MNode{p, lo, hi}, key, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.del(&2, Maybe<&2, V>, MNode{p, lo, hi}, removed), key, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_frame.bend other_binding_survives @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+removed:String -> @+key:String -> @+value:V -> @distinct:different(key, removed) -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, tree, key, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.del(&2, Maybe<&2, V>, tree, removed), key, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_frame.bend other_present_lookup @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+removed:String -> @+key:String -> @+value:V -> @valid:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.valid(Maybe<&2, V>, tree) -> @distinct:different(key, removed) -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == Some{value} : Maybe<&2, V>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.del(&2, Maybe<&2, V>, tree, removed), key) == Some{value} : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_frame.bend uncollapse_low @-V:Data -> @p:Nat -> @hi:Map<&2, Maybe<&2, V>> -> @r:Pair(Map<&2, Maybe<&2, V>>, Maybe<&2, Maybe<&2, V>>) -> @key:String -> @value:V -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.del.fin(&2, Maybe<&2, V>, Map.pop.lo(&2, Maybe<&2, V>, p, hi, r)), key, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, MNode{p, Map.del.fin(&2, Maybe<&2, V>, r), hi}, key, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_frame.bend restore_low @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+p:Nat -> @+removed:String -> @+key:String -> @+value:V -> @recurse:(@_:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.del(&2, Maybe<&2, V>, lo, removed), key, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, lo, key, value)) -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, MNode{p, Map.del(&2, Maybe<&2, V>, lo, removed), hi}, key, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, MNode{p, lo, hi}, key, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_frame.bend uncollapse_high @-V:Data -> @p:Nat -> @lo:Map<&2, Maybe<&2, V>> -> @r:Pair(Map<&2, Maybe<&2, V>>, Maybe<&2, Maybe<&2, V>>) -> @key:String -> @value:V -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.del.fin(&2, Maybe<&2, V>, Map.pop.hi(&2, Maybe<&2, V>, p, lo, r)), key, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, MNode{p, lo, Map.del.fin(&2, Maybe<&2, V>, r)}, key, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_frame.bend restore_high @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+p:Nat -> @+removed:String -> @+key:String -> @+value:V -> @recurse:(@_:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.del(&2, Maybe<&2, V>, hi, removed), key, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, hi, key, value)) -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, MNode{p, lo, Map.del(&2, Maybe<&2, V>, hi, removed)}, key, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, MNode{p, lo, hi}, key, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_frame.bend leaf_original @-V:Data -> @item:Maybe<&2, V> -> @removed:String -> @stored:String -> @c:Cmp -> @key:String -> @value:V -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.del.fin(&2, Maybe<&2, V>, Map.pop.leaf(&2, Maybe<&2, V>, item, ((removed, stored), c))), key, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, MLeaf{stored, item}, key, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_frame.bend original_branch @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+p:Nat -> @+removed:String -> @bit:Bool -> @e:{Map.bit(removed, p) == (removed, bit) : Pair(String, Bool)} -> @+key:String -> @+value:V -> @lp:(@_:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.del(&2, Maybe<&2, V>, lo, removed), key, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, lo, key, value)) -> @hp:(@_:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.del(&2, Maybe<&2, V>, hi, removed), key, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, hi, key, value)) -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.del(&2, Maybe<&2, V>, MNode{p, lo, hi}, removed), key, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, MNode{p, lo, hi}, key, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_frame.bend no_new_binding @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+removed:String -> @+key:String -> @+value:V -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.del(&2, Maybe<&2, V>, tree, removed), key, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, tree, key, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_frame.bend absent_case @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+removed:String -> @+key:String -> @valid:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.valid(Maybe<&2, V>, tree) -> @absent:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == None{} : Maybe<&2, V>} -> @result:Maybe<&2, V> -> @result_eq:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.del(&2, Maybe<&2, V>, tree, removed), key) == result : Maybe<&2, V>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.del(&2, Maybe<&2, V>, tree, removed), key) == None{} : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_frame.bend absent_stays_absent @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+removed:String -> @+key:String -> @valid:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.valid(Maybe<&2, V>, tree) -> @absent:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == None{} : Maybe<&2, V>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.del(&2, Maybe<&2, V>, tree, removed), key) == None{} : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_frame.bend frame_case @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+removed:String -> @+key:String -> @valid:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.valid(Maybe<&2, V>, tree) -> @distinct:different(key, removed) -> @result:Maybe<&2, V> -> @e:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == result : Maybe<&2, V>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.del(&2, Maybe<&2, V>, tree, removed), key) == result : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_frame.bend other_lookup_unchanged @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+removed:String -> @+key:String -> @valid:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.valid(Maybe<&2, V>, tree) -> @distinct:different(key, removed) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.del(&2, Maybe<&2, V>, tree, removed), key) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_membership.bend distinct @+a:String -> @+b:String -> @unequal:{String.eq(a, b) == False{} : Bool} -> @equal:{a == b : String} -> Empty bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_membership.bend other @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+removed:String -> @+query:String -> @+valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @+populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, tree) == True{} : Bool} -> @unequal:{String.eq(query, removed) == False{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, Map.del(&2, Maybe<&2, V>, tree, removed)), query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, tree), query) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_membership.bend same @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+removed:String -> @+valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, tree) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, Map.del(&2, Maybe<&2, V>, tree, removed)), removed) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_membership.bend filter_branch @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+removed:String -> @+query:String -> @equal:Bool -> @+decision:{String.eq(query, removed) == equal : Bool} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, tree) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, Map.del(&2, Maybe<&2, V>, tree, removed)), query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(Map.keys(&2, Maybe<&2, V>, tree), removed), query) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_membership.bend filter_keys @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+removed:String -> @+query:String -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, tree) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, Map.del(&2, Maybe<&2, V>, tree, removed)), query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(Map.keys(&2, Maybe<&2, V>, tree), removed), query) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_populated.bend low @-V:Data -> @p:Nat -> @+hi:Map<&2, Maybe<&2, V>> -> @r:Pair(Map<&2, Maybe<&2, V>>, Maybe<&2, Maybe<&2, V>>) -> @left:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, Map.del.fin(&2, Maybe<&2, V>, r)) == True{} : Bool} -> @right:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, hi) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, Map.del.fin(&2, Maybe<&2, V>, Map.pop.lo(&2, Maybe<&2, V>, p, hi, r))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_populated.bend high @-V:Data -> @p:Nat -> @+lo:Map<&2, Maybe<&2, V>> -> @r:Pair(Map<&2, Maybe<&2, V>>, Maybe<&2, Maybe<&2, V>>) -> @left:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, lo) == True{} : Bool} -> @right:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, Map.del.fin(&2, Maybe<&2, V>, r)) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, Map.del.fin(&2, Maybe<&2, V>, Map.pop.hi(&2, Maybe<&2, V>, p, lo, r))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_populated.bend leaf @-V:Data -> @value:Maybe<&2, V> -> @key:String -> @stored:String -> @c:Cmp -> @route:{Maybe.is_some(&2, V, value) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, Map.del.fin(&2, Maybe<&2, V>, Map.pop.leaf(&2, Maybe<&2, V>, value, ((key, stored), c)))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_populated.bend branch @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+p:Nat -> @+key:String -> @bit:Bool -> @e:{Map.bit(key, p) == (key, bit) : Pair(String, Bool)} -> @left:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, lo) == True{} : Bool} -> @right:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, hi) == True{} : Bool} -> @lp:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, lo) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, Map.del(&2, Maybe<&2, V>, lo, key)) == True{} : Bool}) -> @hp:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, hi) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, Map.del(&2, Maybe<&2, V>, hi, key)) == True{} : Bool}) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, Map.del(&2, Maybe<&2, V>, MNode{p, lo, hi}, key)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_populated.bend preserves_populated @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+routes:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, tree) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, Map.del(&2, Maybe<&2, V>, tree, key)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_prefix.bend conjunction @a:Bool -> @b:Bool -> @left:{a == True{} : Bool} -> @right:{b == True{} : Bool} -> {Bool.and(a, b) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_prefix.bend low @-V:Data -> @p:Nat -> @+hi:Map<&2, V> -> @r:Pair(Map<&2, V>, Maybe<&2, V>) -> @+query:String -> @+limit:Nat -> @left:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, query, Map.del.fin(&2, V, r), limit) == True{} : Bool} -> @right:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, query, hi, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, query, Map.del.fin(&2, V, Map.pop.lo(&2, V, p, hi, r)), limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_prefix.bend high @-V:Data -> @p:Nat -> @+lo:Map<&2, V> -> @r:Pair(Map<&2, V>, Maybe<&2, V>) -> @+query:String -> @+limit:Nat -> @left:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, query, lo, limit) == True{} : Bool} -> @right:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, query, Map.del.fin(&2, V, r), limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, query, Map.del.fin(&2, V, Map.pop.hi(&2, V, p, lo, r)), limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_prefix.bend leaf @-V:Data -> @value:V -> @key:String -> @stored:String -> @c:Cmp -> @query:String -> @limit:Nat -> @route:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.same_prefix(query, stored, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, query, Map.del.fin(&2, V, Map.pop.leaf(&2, V, value, ((key, stored), c))), limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_prefix.bend branch @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @bit:Bool -> @e:{Map.bit(key, p) == (key, bit) : Pair(String, Bool)} -> @+query:String -> @+limit:Nat -> @left:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, query, lo, limit) == True{} : Bool} -> @right:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, query, hi, limit) == True{} : Bool} -> @lp:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, query, lo, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, query, Map.del(&2, V, lo, key), limit) == True{} : Bool}) -> @hp:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, query, hi, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, query, Map.del(&2, V, hi, key), limit) == True{} : Bool}) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, query, Map.del(&2, V, MNode{p, lo, hi}, key), limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_prefix.bend preserves_prefix_against @-V:Data -> @tree:Map<&2, V> -> @+key:String -> @+query:String -> @+limit:Nat -> @+routes:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, query, tree, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, query, Map.del(&2, V, tree, key), limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_routes.bend low @-V:Data -> @p:Nat -> @hi:Map<&2, V> -> @r:Pair(Map<&2, V>, Maybe<&2, V>) -> @+position:Nat -> @+side:Bool -> @left:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(V, Map.del.fin(&2, V, r), position, side) -> @right:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(V, hi, position, side) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(V, Map.del.fin(&2, V, Map.pop.lo(&2, V, p, hi, r)), position, side) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_routes.bend high @-V:Data -> @p:Nat -> @lo:Map<&2, V> -> @r:Pair(Map<&2, V>, Maybe<&2, V>) -> @+position:Nat -> @+side:Bool -> @left:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(V, lo, position, side) -> @right:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(V, Map.del.fin(&2, V, r), position, side) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(V, Map.del.fin(&2, V, Map.pop.hi(&2, V, p, lo, r)), position, side) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_routes.bend leaf @-V:Data -> @value:V -> @key:String -> @stored:String -> @c:Cmp -> @position:Nat -> @side:Bool -> @route:{Map.bit(stored, position) == (stored, side) : Pair(String, Bool)} -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(V, Map.del.fin(&2, V, Map.pop.leaf(&2, V, value, ((key, stored), c))), position, side) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_routes.bend branch @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @bit:Bool -> @e:{Map.bit(key, p) == (key, bit) : Pair(String, Bool)} -> @+position:Nat -> @+side:Bool -> @left:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(V, lo, position, side) -> @right:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(V, hi, position, side) -> @lp:(@_:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(V, lo, position, side) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(V, Map.del(&2, V, lo, key), position, side)) -> @hp:(@_:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(V, hi, position, side) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(V, Map.del(&2, V, hi, key), position, side)) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(V, Map.del(&2, V, MNode{p, lo, hi}, key), position, side) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_routes.bend preserves_routing @-V:Data -> @tree:Map<&2, V> -> @+key:String -> @+position:Nat -> @+side:Bool -> @routes:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(V, tree, position, side) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(V, Map.del(&2, V, tree, key), position, side) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_routes.bend low_valid @-V:Data -> @+p:Nat -> @hi:Map<&2, V> -> @r:Pair(Map<&2, V>, Maybe<&2, V>) -> @lr:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(V, Map.del.fin(&2, V, r), p, False{}) -> @hr:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(V, hi, p, True{}) -> @lv:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.valid(V, Map.del.fin(&2, V, r)) -> @hv:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.valid(V, hi) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.valid(V, Map.del.fin(&2, V, Map.pop.lo(&2, V, p, hi, r))) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_routes.bend high_valid @-V:Data -> @+p:Nat -> @lo:Map<&2, V> -> @r:Pair(Map<&2, V>, Maybe<&2, V>) -> @lr:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(V, lo, p, False{}) -> @hr:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(V, Map.del.fin(&2, V, r), p, True{}) -> @lv:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.valid(V, lo) -> @hv:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.valid(V, Map.del.fin(&2, V, r)) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.valid(V, Map.del.fin(&2, V, Map.pop.hi(&2, V, p, lo, r))) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_routes.bend leaf_valid @-V:Data -> @value:V -> @key:String -> @stored:String -> @c:Cmp -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.valid(V, Map.del.fin(&2, V, Map.pop.leaf(&2, V, value, ((key, stored), c)))) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_routes.bend branch_valid @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @bit:Bool -> @e:{Map.bit(key, p) == (key, bit) : Pair(String, Bool)} -> @lr:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(V, lo, p, False{}) -> @hr:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(V, hi, p, True{}) -> @lv:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.valid(V, lo) -> @hv:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.valid(V, hi) -> @lp:(@_:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.valid(V, lo) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.valid(V, Map.del(&2, V, lo, key))) -> @hp:(@_:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.valid(V, hi) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.valid(V, Map.del(&2, V, hi, key))) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.valid(V, Map.del(&2, V, MNode{p, lo, hi}, key)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete_routes.bend preserves_valid @-V:Data -> @tree:Map<&2, V> -> @+key:String -> @valid:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.valid(V, tree) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.valid(V, Map.del(&2, V, tree, key)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete.bend different_sides @side:Bool -> @e:{side == Bool.not(side) : Bool} -> Empty bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete.bend opposite_routes @+key:String -> @+pos:Nat -> @+side:Bool -> @a:{Map.bit(key, pos) == (key, side) : Pair(String, Bool)} -> @b:{Map.bit(key, pos) == (key, Bool.not(side)) : Pair(String, Bool)} -> Empty bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete.bend opposite_case @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+pos:Nat -> @+side:Bool -> @routes:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(Maybe<&2, V>, tree, pos, Bool.not(side)) -> @bit:{Map.bit(key, pos) == (key, side) : Pair(String, Bool)} -> @found:Maybe<&2, V> -> @result:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == found : Maybe<&2, V>} -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.certificate(V, tree, key, found) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == None{} : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete.bend opposite_missing @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @pos:Nat -> @side:Bool -> @routes:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(Maybe<&2, V>, tree, pos, Bool.not(side)) -> @bit:{Map.bit(key, pos) == (key, side) : Pair(String, Bool)} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == None{} : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete.bend collapse_low @-V:Data -> @+hi:Map<&2, Maybe<&2, V>> -> @+p:Nat -> @+key:String -> @bit:{Map.bit(key, p) == (key, False{}) : Pair(String, Bool)} -> @routes:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(Maybe<&2, V>, hi, p, True{}) -> @r:Pair(Map<&2, Maybe<&2, V>>, Maybe<&2, Maybe<&2, V>>) -> @absent:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.del.fin(&2, Maybe<&2, V>, r), key) == None{} : Maybe<&2, V>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.del.fin(&2, Maybe<&2, V>, Map.pop.lo(&2, Maybe<&2, V>, p, hi, r)), key) == None{} : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete.bend collapse_high @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+p:Nat -> @+key:String -> @bit:{Map.bit(key, p) == (key, True{}) : Pair(String, Bool)} -> @routes:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(Maybe<&2, V>, lo, p, False{}) -> @r:Pair(Map<&2, Maybe<&2, V>>, Maybe<&2, Maybe<&2, V>>) -> @absent:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.del.fin(&2, Maybe<&2, V>, r), key) == None{} : Maybe<&2, V>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.del.fin(&2, Maybe<&2, V>, Map.pop.hi(&2, Maybe<&2, V>, p, lo, r)), key) == None{} : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete.bend leaf_case @-V:Data -> @+item:Maybe<&2, V> -> @+key:String -> @+stored:String -> @cmp:Cmp -> @e:{String.cmp(key, stored) == ((key, stored), cmp) : Pair(Pair(String, String), Cmp)} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.del.fin(&2, Maybe<&2, V>, Map.pop.leaf(&2, Maybe<&2, V>, item, ((key, stored), cmp))), key) == None{} : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete.bend leaf_delete @-V:Data -> @+item:Maybe<&2, V> -> @+key:String -> @+stored:String -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.del(&2, Maybe<&2, V>, MLeaf{stored, item}, key), key) == None{} : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete.bend branch @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+p:Nat -> @+key:String -> @bit:Bool -> @+e:{Map.bit(key, p) == (key, bit) : Pair(String, Bool)} -> @lr:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(Maybe<&2, V>, lo, p, False{}) -> @hr:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(Maybe<&2, V>, hi, p, True{}) -> @lp:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.del(&2, Maybe<&2, V>, lo, key), key) == None{} : Maybe<&2, V>} -> @hp:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.del(&2, Maybe<&2, V>, hi, key), key) == None{} : Maybe<&2, V>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.del(&2, Maybe<&2, V>, MNode{p, lo, hi}, key), key) == None{} : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete.bend delete_same @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @invariant:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.valid(Maybe<&2, V>, tree) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.del(&2, Maybe<&2, V>, tree, key), key) == None{} : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_delete.bend critbit_delete_same @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @key:String -> @invariant:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.del(&2, Maybe<&2, V>, tree, key), key) == None{} : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_char.bend le_self @n:Nat -> {Nat.is_le(n, n) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_char.bend subtract_bound @n:Nat -> @k:Nat -> {Nat.is_le(Nat.sub(n, k), n) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_char.bend subtract_self @n:Nat -> {Nat.sub(n, n) == 0n : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_char.bend subtract_successor @n:Nat -> @k:Nat -> @bound:{Nat.is_le(k, n) == True{} : Bool} -> {Nat.sub(1n+n, k) == 1n+Nat.sub(n, k) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_char.bend subtract_involution @n:Nat -> @k:Nat -> @bound:{Nat.is_le(k, n) == True{} : Bool} -> {Nat.sub(n, Nat.sub(n, k)) == k : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_char.bend character_offset @+x:U32 -> @+position:Nat -> @+bound:{Nat.is_le(position, 31n) == True{} : Bool} -> {bit(Map.bit.chr(Chr{x}, Nat.sub(32n, position))) == Map.bit.u(x, position) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_char.bend from_difference @+a:U32 -> @+b:U32 -> @difference:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_msb.Difference(a, b) -> {Bool.xor(bit(Map.bit.chr(Chr{a}, Map.diff.chr(U32.xor(a, b)))), bit(Map.bit.chr(Chr{b}, Map.diff.chr(U32.xor(a, b))))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_char.bend native_character_difference @+a:U32 -> @+b:U32 -> @unequal:{U32.is_eq(a, b) == False{} : Bool} -> {Bool.xor(bit(Map.bit.chr(Chr{a}, Map.diff.chr(U32.xor(a, b)))), bit(Map.bit.chr(Chr{b}, Map.diff.chr(U32.xor(a, b))))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_char.bend earlier_word_bits_agree @+a:U32 -> @+b:U32 -> @+distance:Nat -> {Bool.xor(Map.bit.u(a, Nat.add(Map.msb.u(32n, U32.xor(a, b)), distance)), Map.bit.u(b, Nat.add(Map.msb.u(32n, U32.xor(a, b)), distance))) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_char.bend difference_bound @+a:U32 -> @+b:U32 -> @difference:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_msb.Difference(a, b) -> {Nat.is_le(Map.diff.chr(U32.xor(a, b)), 32n) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend add_zero @n:Nat -> {Nat.add(n, 0n) == n : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend add_commute @a:Nat -> @+b:Nat -> {Nat.add(a, b) == Nat.add(b, a) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend add_sub_bound @n:Nat -> @m:Nat -> @+k:Nat -> @bound:{Nat.is_le(m, n) == True{} : Bool} -> @inside:{Nat.is_le(k, Nat.sub(n, m)) == True{} : Bool} -> {Nat.is_le(Nat.add(m, k), n) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend sub_from_add @n:Nat -> @k:Nat -> @+m:Nat -> @bound:{Nat.is_le(Nat.add(k, m), n) == True{} : Bool} -> {Nat.is_le(m, Nat.sub(n, k)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend add_complement @n:Nat -> @m:Nat -> @bound:{Nat.is_le(m, n) == True{} : Bool} -> {Nat.add(m, Nat.sub(n, m)) == n : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend strict_successor @a:Nat -> @b:Nat -> @strict:{Nat.is_lt(a, b) == True{} : Bool} -> {Nat.is_le(1n+a, b) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend less_is_le @a:Nat -> @b:Nat -> @e:{Nat.is_lt(a, b) == True{} : Bool} -> {Nat.is_le(a, b) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend lift_split @+limit:Nat -> @+offset:Nat -> @split:Split(limit, offset) -> Split(1n+limit, 1n+offset) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend split_offset @limit:Nat -> @offset:Nat -> Split(limit, offset) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference.bend comparison_eq @c:Cmp -> @e:{Cmp.is_eq(c) == True{} : Bool} -> {c == EQ{} : Cmp} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference.bend u32_equal @a:U32 -> @b:U32 -> @e:{U32.is_eq(a, b) == True{} : Bool} -> {a == b : U32} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference.bend recursive_bit @h:Char -> @pair:Pair(String, Bool) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.route_bit(Map.bit.go.rec(h, pair)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.route_bit(pair) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference.bend character_bit @tail:String -> @pair:Pair(Char, Bool) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.route_bit(Map.bit.go.chr(tail, pair)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_difference_char.bit(pair) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference.bend common_head_route @+head:Char -> @+tail:String -> @+position:Nat -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.route_bit(Map.bit(SCon{head, tail}, Nat.add(33n, position))) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.route_bit(Map.bit(tail, position)) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference.bend first_route @+head:Char -> @+tail:String -> @+position:Nat -> @bound:{Nat.is_le(position, 32n) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.route_bit(Map.bit(SCon{head, tail}, position)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_difference_char.bit(Map.bit.chr(head, position)) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference.bend same_head @+head:Char -> @+a:String -> @+b:String -> @tail:{distinguishes(a, b) == True{} : Bool} -> {distinguishes(SCon{head, a}, SCon{head, b}) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference.bend distinct_head @+x:U32 -> @+y:U32 -> @+a:String -> @+b:String -> @+unequal:{U32.is_eq(x, y) == False{} : Bool} -> {distinguishes(SCon{Chr{x}, a}, SCon{Chr{y}, b}) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference.bend equal_head_branch @+x:U32 -> @+y:U32 -> @+a:String -> @+b:String -> @+eq:{x == y : U32} -> @distinct:different(SCon{Chr{x}, a}, SCon{Chr{y}, b}) -> @recur:(@_:different(a, b) -> {distinguishes(a, b) == True{} : Bool}) -> {distinguishes(SCon{Chr{x}, a}, SCon{Chr{y}, b}) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference.bend head_branch @+x:U32 -> @+y:U32 -> @+a:String -> @+b:String -> @same:Bool -> @eq:{U32.is_eq(x, y) == same : Bool} -> @distinct:different(SCon{Chr{x}, a}, SCon{Chr{y}, b}) -> @recur:(@_:different(a, b) -> {distinguishes(a, b) == True{} : Bool}) -> {distinguishes(SCon{Chr{x}, a}, SCon{Chr{y}, b}) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference.bend native_difference @a:String -> @b:String -> @distinct:different(a, b) -> {distinguishes(a, b) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_difference.bend native_difference_on_unequal_comparison @+a:String -> @+b:String -> @unequal:{String.eq(a, b) == False{} : Bool} -> {distinguishes(a, b) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_enumeration.bend lift_high @-V:Data -> @lo:Map<&2, Maybe<&2, V>> -> @hi:Map<&2, Maybe<&2, V>> -> @p:Nat -> @acc:List<&2, Sigma<&2, &2, String, _ => Maybe<&2, V>>> -> @key:String -> @value:V -> @proof:partition(V, hi, acc, key, value) -> partition(V, MNode{p, lo, hi}, acc, key, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_enumeration.bend lift_node @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @p:Nat -> @acc:List<&2, Sigma<&2, &2, String, _ => Maybe<&2, V>>> -> @key:String -> @value:V -> @high:(@member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.listed(V, Map.to_list.go(&2, Maybe<&2, V>, hi, acc), key, value) -> partition(V, hi, acc, key, value)) -> @proof:partition(V, lo, Map.to_list.go(&2, Maybe<&2, V>, hi, acc), key, value) -> partition(V, MNode{p, lo, hi}, acc, key, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_enumeration.bend enumeration_partition @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+acc:List<&2, Sigma<&2, &2, String, _ => Maybe<&2, V>>> -> @+key:String -> @+value:V -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.listed(V, Map.to_list.go(&2, Maybe<&2, V>, tree, acc), key, value) -> partition(V, tree, acc, key, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_enumeration.bend empty_accumulator @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @key:String -> @value:V -> @proof:partition(V, tree, [], key, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, tree, key, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_enumeration.bend enumerated_is_leaf @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+value:V -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.listed(V, Map.to_list(&2, Maybe<&2, V>, tree), key, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, tree, key, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_enumeration.bend enumerated_lookup @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+value:V -> @invariant:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.listed(V, Map.to_list(&2, Maybe<&2, V>, tree), key, value) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == Some{value} : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_index.bend quotient_translation @n:Nat -> @m:Nat -> @+q:Nat -> @r:Nat -> {Nat.divmod.go(n, m, 1n+q, r) == next_quotient(Nat.divmod.go(n, m, q, r)) : Pair(Nat, Nat)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_index.bend character_stride @position:Nat -> {Nat.divmod(Nat.add(33n, position), 33n) == next_quotient(Nat.divmod(position, 33n)) : Pair(Nat, Nat)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_index.bend bit_at_next @h:Char -> @tail:String -> @pair:Pair(Nat, Nat) -> {Map.bit.at(SCon{h, tail}, next_quotient(pair)) == Map.bit.go.rec(h, Map.bit.at(tail, pair)) : Pair(String, Bool)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_index.bend native_character_stride @+h:Char -> @+tail:String -> @+position:Nat -> {Map.bit(SCon{h, tail}, Nat.add(33n, position)) == Map.bit.go.rec(h, Map.bit(tail, position)) : Pair(String, Bool)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_index.bend add_right_successor @a:Nat -> @+b:Nat -> {Nat.add(a, 1n+b) == 1n+Nat.add(a, b) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_index.bend division_no_wrap @n:Nat -> @m:Nat -> @+q:Nat -> @+r:Nat -> @bound:{Nat.is_le(n, m) == True{} : Bool} -> {Nat.divmod.go(n, m, q, r) == (q, Nat.add(n, r)) : Pair(Nat, Nat)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_index.bend first_character_division @+position:Nat -> @bound:{Nat.is_le(position, 32n) == True{} : Bool} -> {Nat.divmod(position, 33n) == (0n, position) : Pair(Nat, Nat)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_index.bend native_first_character @+head:Char -> @+tail:String -> @+position:Nat -> @bound:{Nat.is_le(position, 32n) == True{} : Bool} -> {Map.bit(SCon{head, tail}, position) == Map.bit.go.chr(tail, Map.bit.chr(head, position)) : Pair(String, Bool)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_before.bend reverse_not_less @a:Nat -> @b:Nat -> @earlier:{Nat.is_lt(a, b) == True{} : Bool} -> {Nat.is_lt(b, a) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_before.bend splice_before @-V:Data -> @+key:String -> @+stored:String -> @+value:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+position:Nat -> @distinct:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_difference.different(key, stored) -> @+found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, MNode{position, lo, hi}, key)) == Some{stored} : Maybe<&2, String>} -> @+earlier:{Nat.is_lt(Map.diff(key, stored), position) == True{} : Bool} -> @+valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, MNode{position, lo, hi}) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.ins.splice(&2, V, Map.diff(key, stored), key, value, MNode{position, lo, hi})) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_before.bend insertion_before @-V:Data -> @+key:String -> @+stored:String -> @+value:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+position:Nat -> @distinct:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_difference.different(key, stored) -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, MNode{position, lo, hi}, key)) == Some{stored} : Maybe<&2, String>} -> @+earlier:{Nat.is_lt(Map.diff(key, stored), position) == True{} : Bool} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, MNode{position, lo, hi}) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.ins(&2, V, MNode{position, lo, hi}, key, value, Map.diff(key, stored))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_below.bend splice_bit @-V:Data -> @value:V -> @rest:Map<&2, V> -> @+discriminator:Nat -> @route:Pair(String, Bool) -> @+parent:Nat -> @ordered:{Nat.is_lt(parent, discriminator) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, Map.ins.splice.bit(&2, V, value, rest, discriminator, route), parent) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_below.bend deep_bit @-V:Data -> @value:V -> @lo:Map<&2, V> -> @hi:Map<&2, V> -> @discriminator:Nat -> @+position:Nat -> @route:Pair(String, Bool) -> @+parent:Nat -> @ordered:{Nat.is_lt(parent, position) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_deep(&2, V, value, lo, hi, discriminator, position, route), parent) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_below.bend branch @-V:Data -> @+key:String -> @value:V -> @lo:Map<&2, V> -> @hi:Map<&2, V> -> @+position:Nat -> @+discriminator:Nat -> @descend:Bool -> @+parent:Nat -> @fresh:{Nat.is_lt(parent, discriminator) == True{} : Bool} -> @existing:{Nat.is_lt(parent, position) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_if(&2, V, key, value, lo, hi, position, discriminator, descend), parent) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_below.bend preserves_below @-V:Data -> @tree:Map<&2, V> -> @+key:String -> @+value:V -> @+discriminator:Nat -> @+parent:Nat -> @fresh:{Nat.is_lt(parent, discriminator) == True{} : Bool} -> @existing:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, tree, parent) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, Map.ins(&2, V, tree, key, value, discriminator), parent) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_common.bend splice_bit @-V:Data -> @+key:String -> @value:V -> @+rest:Map<&2, V> -> @discriminator:Nat -> @bit:Bool -> @+position:Nat -> @+side:Map<&2, V> -> @fresh:{rows(V, MLeaf{key, value}, position, side) == True{} : Bool} -> @existing:{rows(V, rest, position, side) == True{} : Bool} -> {rows(V, Map.ins.splice.bit(&2, V, value, rest, discriminator, (key, bit)), position, side) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_common.bend splice @-V:Data -> @+key:String -> @+value:V -> @+rest:Map<&2, V> -> @+discriminator:Nat -> @+position:Nat -> @+side:Map<&2, V> -> @fresh:{rows(V, MLeaf{key, value}, position, side) == True{} : Bool} -> @existing:{rows(V, rest, position, side) == True{} : Bool} -> {rows(V, Map.ins.splice(&2, V, discriminator, key, value, rest), position, side) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_common.bend deep_bit @-V:Data -> @+key:String -> @+value:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+discriminator:Nat -> @parent:Nat -> @bit:Bool -> @+position:Nat -> @+side:Map<&2, V> -> @left:{rows(V, lo, position, side) == True{} : Bool} -> @right:{rows(V, hi, position, side) == True{} : Bool} -> @changed_left:{rows(V, Map.ins(&2, V, lo, key, value, discriminator), position, side) == True{} : Bool} -> @changed_right:{rows(V, Map.ins(&2, V, hi, key, value, discriminator), position, side) == True{} : Bool} -> {rows(V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_deep(&2, V, value, lo, hi, discriminator, parent, (key, bit)), position, side) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_common.bend branch @-V:Data -> @+key:String -> @+value:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+discriminator:Nat -> @+parent:Nat -> @descend:Bool -> @+position:Nat -> @+side:Map<&2, V> -> @fresh:{rows(V, MLeaf{key, value}, position, side) == True{} : Bool} -> @left:{rows(V, lo, position, side) == True{} : Bool} -> @right:{rows(V, hi, position, side) == True{} : Bool} -> @changed_left:{rows(V, Map.ins(&2, V, lo, key, value, discriminator), position, side) == True{} : Bool} -> @changed_right:{rows(V, Map.ins(&2, V, hi, key, value, discriminator), position, side) == True{} : Bool} -> {rows(V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_if(&2, V, key, value, lo, hi, parent, discriminator, descend), position, side) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_common.bend preserves_rows @-V:Data -> @tree:Map<&2, V> -> @+key:String -> @+value:V -> @+discriminator:Nat -> @+position:Nat -> @+side:Map<&2, V> -> @+fresh:{rows(V, MLeaf{key, value}, position, side) == True{} : Bool} -> @+existing:{rows(V, tree, position, side) == True{} : Bool} -> {rows(V, Map.ins(&2, V, tree, key, value, discriminator), position, side) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_common.bend preserves_columns @-V:Data -> @tree:Map<&2, V> -> @+whole:Map<&2, V> -> @+key:String -> @+value:V -> @+discriminator:Nat -> @+limit:Nat -> @+fresh:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, key, tree, limit) == True{} : Bool} -> @+existing:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, tree, whole, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, tree, Map.ins(&2, V, whole, key, value, discriminator), limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_common.bend preserves_common_prefix @-V:Data -> @+tree:Map<&2, V> -> @+key:String -> @+value:V -> @+discriminator:Nat -> @+limit:Nat -> @+fresh:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, key, tree, limit) == True{} : Bool} -> @existing:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, tree, tree, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, Map.ins(&2, V, tree, key, value, discriminator), Map.ins(&2, V, tree, key, value, discriminator), limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_critbit.bend order_lift @+a:Nat -> @+b:Nat -> @order:Order(a, b) -> Order(1n+a, 1n+b) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_critbit.bend total_order @a:Nat -> @b:Nat -> Order(a, b) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_critbit.bend equal_impossible @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+position:Nat -> @+key:String -> @+stored:String -> @distinct:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_difference.different(key, stored) -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, MNode{position, lo, hi}, key)) == Some{stored} : Maybe<&2, String>} -> @equal:{Map.diff(key, stored) == position : Nat} -> @parts:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_critbit_parts.NodeFacts(V, position, lo, hi) -> Empty bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_critbit.bend node_case @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+position:Nat -> @+key:String -> @+stored:String -> @+value:V -> @order:Order(Map.diff(key, stored), position) -> @distinct:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_difference.different(key, stored) -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, MNode{position, lo, hi}, key)) == Some{stored} : Maybe<&2, String>} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, MNode{position, lo, hi}) == True{} : Bool} -> @lp:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, lo) == True{} : Bool} -> @_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, lo, key)) == Some{stored} : Maybe<&2, String>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.ins(&2, V, lo, key, value, Map.diff(key, stored))) == True{} : Bool}) -> @hp:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, hi) == True{} : Bool} -> @_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, hi, key)) == Some{stored} : Maybe<&2, String>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.ins(&2, V, hi, key, value, Map.diff(key, stored))) == True{} : Bool}) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.ins(&2, V, MNode{position, lo, hi}, key, value, Map.diff(key, stored))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_critbit.bend leaf @-V:Data -> @+key:String -> @+stored:String -> @+actual:String -> @value:V -> @old:V -> @distinct:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_difference.different(key, stored) -> @found:{Some{actual} == Some{stored} : Maybe<&2, String>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.ins(&2, V, MLeaf{actual, old}, key, value, Map.diff(key, stored))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_critbit.bend unequal_distinct @+key:String -> @+stored:String -> @unequal:{String.eq(key, stored) == False{} : Bool} -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_difference.different(key, stored) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_critbit.bend insertion_at_seek @-V:Data -> @tree:Map<&2, V> -> @+key:String -> @+stored:String -> @+value:V -> @+unequal:{String.eq(key, stored) == False{} : Bool} -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, tree, key)) == Some{stored} : Maybe<&2, String>} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, tree) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.ins(&2, V, tree, key, value, Map.diff(key, stored))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_descent.bend deep_common @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+position:Nat -> @+discriminator:Nat -> @+key:String -> @+value:V -> @descend:{Nat.is_lt(position, discriminator) == True{} : Bool} -> @fresh:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, key, MNode{position, lo, hi}, position) == True{} : Bool} -> @common:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, MNode{position, lo, hi}, MNode{position, lo, hi}, position) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_deep(&2, V, value, lo, hi, discriminator, position, Map.bit(key, position)), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_deep(&2, V, value, lo, hi, discriminator, position, Map.bit(key, position)), position) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_descent.bend common_bit @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+position:Nat -> @+discriminator:Nat -> @+key:String -> @+value:V -> @+bit:Bool -> @route:{Map.bit(key, position) == (key, bit) : Pair(String, Bool)} -> @all:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_deep(&2, V, value, lo, hi, discriminator, position, Map.bit(key, position)), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_deep(&2, V, value, lo, hi, discriminator, position, Map.bit(key, position)), position) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_deep(&2, V, value, lo, hi, discriminator, position, (key, bit)), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_deep(&2, V, value, lo, hi, discriminator, position, (key, bit)), position) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_descent.bend deep_bit_ready @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+position:Nat -> @+key:String -> @+stored:String -> @+value:V -> @+bit:Bool -> @+route:{Map.bit(key, position) == (key, bit) : Pair(String, Bool)} -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, MNode{position, lo, hi}, key)) == Some{stored} : Maybe<&2, String>} -> @+descend:{Nat.is_lt(position, Map.diff(key, stored)) == True{} : Bool} -> @+common:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, MNode{position, lo, hi}, MNode{position, lo, hi}, position) == True{} : Bool} -> @nl:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.nonempty(V, lo) == True{} : Bool} -> @nh:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.nonempty(V, hi) == True{} : Bool} -> @bl:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, lo, position) == True{} : Bool} -> @bh:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, hi, position) == True{} : Bool} -> @rl:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, lo, position, False{}) == True{} : Bool} -> @rh:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, hi, position, True{}) == True{} : Bool} -> @vl:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, lo) == True{} : Bool} -> @vh:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, hi) == True{} : Bool} -> @lp:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, lo) == True{} : Bool} -> @_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, lo, key)) == Some{stored} : Maybe<&2, String>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.ins(&2, V, lo, key, value, Map.diff(key, stored))) == True{} : Bool}) -> @hp:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, hi) == True{} : Bool} -> @_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, hi, key)) == Some{stored} : Maybe<&2, String>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.ins(&2, V, hi, key, value, Map.diff(key, stored))) == True{} : Bool}) -> @converted:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_deep(&2, V, value, lo, hi, Map.diff(key, stored), position, (key, bit)), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_deep(&2, V, value, lo, hi, Map.diff(key, stored), position, (key, bit)), position) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_deep(&2, V, value, lo, hi, Map.diff(key, stored), position, (key, bit))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_descent.bend deep_bit @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+position:Nat -> @+key:String -> @+stored:String -> @+value:V -> @+bit:Bool -> @+route:{Map.bit(key, position) == (key, bit) : Pair(String, Bool)} -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, MNode{position, lo, hi}, key)) == Some{stored} : Maybe<&2, String>} -> @+descend:{Nat.is_lt(position, Map.diff(key, stored)) == True{} : Bool} -> @+common:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, MNode{position, lo, hi}, MNode{position, lo, hi}, position) == True{} : Bool} -> @nl:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.nonempty(V, lo) == True{} : Bool} -> @nh:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.nonempty(V, hi) == True{} : Bool} -> @bl:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, lo, position) == True{} : Bool} -> @bh:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, hi, position) == True{} : Bool} -> @rl:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, lo, position, False{}) == True{} : Bool} -> @rh:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, hi, position, True{}) == True{} : Bool} -> @vl:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, lo) == True{} : Bool} -> @vh:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, hi) == True{} : Bool} -> @lp:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, lo) == True{} : Bool} -> @_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, lo, key)) == Some{stored} : Maybe<&2, String>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.ins(&2, V, lo, key, value, Map.diff(key, stored))) == True{} : Bool}) -> @hp:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, hi) == True{} : Bool} -> @_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, hi, key)) == Some{stored} : Maybe<&2, String>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.ins(&2, V, hi, key, value, Map.diff(key, stored))) == True{} : Bool}) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_deep(&2, V, value, lo, hi, Map.diff(key, stored), position, (key, bit))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_descent.bend from_parts @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+position:Nat -> @+key:String -> @+stored:String -> @+value:V -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, MNode{position, lo, hi}, key)) == Some{stored} : Maybe<&2, String>} -> @+descend:{Nat.is_lt(position, Map.diff(key, stored)) == True{} : Bool} -> @parts:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_critbit_parts.NodeFacts(V, position, lo, hi) -> @lp:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, lo) == True{} : Bool} -> @_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, lo, key)) == Some{stored} : Maybe<&2, String>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.ins(&2, V, lo, key, value, Map.diff(key, stored))) == True{} : Bool}) -> @hp:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, hi) == True{} : Bool} -> @_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, hi, key)) == Some{stored} : Maybe<&2, String>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.ins(&2, V, hi, key, value, Map.diff(key, stored))) == True{} : Bool}) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.ins(&2, V, MNode{position, lo, hi}, key, value, Map.diff(key, stored))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_frame.bend absent_case @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+item:Maybe<&2, V> -> @+discriminator:Nat -> @+query:String -> @unequal:{String.eq(query, key) == False{} : Bool} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @absent:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, query) == None{} : Maybe<&2, V>} -> @result:Maybe<&2, V> -> @result_eq:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.ins(&2, Maybe<&2, V>, tree, key, item, discriminator), query) == result : Maybe<&2, V>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.ins(&2, Maybe<&2, V>, tree, key, item, discriminator), query) == None{} : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_frame.bend frame_case @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+stored:String -> @+item:Maybe<&2, V> -> @+query:String -> @unequal:{String.eq(query, key) == False{} : Bool} -> @fresh:{String.eq(key, stored) == False{} : Bool} -> @selected:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(Maybe<&2, V>, Map.seek(&2, Maybe<&2, V>, tree, key)) == Some{stored} : Maybe<&2, String>} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @result:Maybe<&2, V> -> @result_eq:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, query) == result : Maybe<&2, V>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.ins(&2, Maybe<&2, V>, tree, key, item, Map.diff(key, stored)), query) == result : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_frame.bend other_lookup_unchanged @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+stored:String -> @+item:Maybe<&2, V> -> @+query:String -> @unequal:{String.eq(query, key) == False{} : Bool} -> @fresh:{String.eq(key, stored) == False{} : Bool} -> @selected:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(Maybe<&2, V>, Map.seek(&2, Maybe<&2, V>, tree, key)) == Some{stored} : Maybe<&2, String>} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.ins(&2, Maybe<&2, V>, tree, key, item, Map.diff(key, stored)), query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, query) : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_inverse.bend fresh_impossible @-V:Data -> @key:String -> @item:Maybe<&2, V> -> @query:String -> @value:V -> @unequal:{String.eq(query, key) == False{} : Bool} -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, MLeaf{key, item}, query, value) -> Empty bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_inverse.bend splice_bit @-V:Data -> @key:String -> @item:Maybe<&2, V> -> @rest:Map<&2, Maybe<&2, V>> -> @discriminator:Nat -> @bit:Bool -> @query:String -> @value:V -> @+unequal:{String.eq(query, key) == False{} : Bool} -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.ins.splice.bit(&2, Maybe<&2, V>, item, rest, discriminator, (key, bit)), query, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, rest, query, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_inverse.bend splice @-V:Data -> @+key:String -> @item:Maybe<&2, V> -> @rest:Map<&2, Maybe<&2, V>> -> @+discriminator:Nat -> @query:String -> @value:V -> @+unequal:{String.eq(query, key) == False{} : Bool} -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.ins.splice(&2, Maybe<&2, V>, discriminator, key, item, rest), query, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, rest, query, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_inverse.bend deep @-V:Data -> @+key:String -> @+item:Maybe<&2, V> -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+discriminator:Nat -> @parent:Nat -> @bit:Bool -> @+query:String -> @+value:V -> @lp:(@_:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.ins(&2, Maybe<&2, V>, lo, key, item, discriminator), query, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, lo, query, value)) -> @hp:(@_:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.ins(&2, Maybe<&2, V>, hi, key, item, discriminator), query, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, hi, query, value)) -> @+unequal:{String.eq(query, key) == False{} : Bool} -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_deep(&2, Maybe<&2, V>, item, lo, hi, discriminator, parent, (key, bit)), query, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, MNode{parent, lo, hi}, query, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_inverse.bend branch @-V:Data -> @+key:String -> @+item:Maybe<&2, V> -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+discriminator:Nat -> @+parent:Nat -> @descend:Bool -> @+query:String -> @+value:V -> @lp:(@_:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.ins(&2, Maybe<&2, V>, lo, key, item, discriminator), query, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, lo, query, value)) -> @hp:(@_:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.ins(&2, Maybe<&2, V>, hi, key, item, discriminator), query, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, hi, query, value)) -> @+unequal:{String.eq(query, key) == False{} : Bool} -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_if(&2, Maybe<&2, V>, key, item, lo, hi, parent, discriminator, descend), query, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, MNode{parent, lo, hi}, query, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_inverse.bend no_new_other_binding @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+item:Maybe<&2, V> -> @+discriminator:Nat -> @+query:String -> @+value:V -> @+unequal:{String.eq(query, key) == False{} : Bool} -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.ins(&2, Maybe<&2, V>, tree, key, item, discriminator), query, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, tree, query, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_membership.bend splice_bit @-V:Data -> @key:String -> @item:Maybe<&2, V> -> @rest:Map<&2, Maybe<&2, V>> -> @discriminator:Nat -> @bit:Bool -> @query:String -> @value:V -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, rest, query, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.ins.splice.bit(&2, Maybe<&2, V>, item, rest, discriminator, (key, bit)), query, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_membership.bend splice @-V:Data -> @+key:String -> @item:Maybe<&2, V> -> @rest:Map<&2, Maybe<&2, V>> -> @+discriminator:Nat -> @query:String -> @value:V -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, rest, query, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.ins.splice(&2, Maybe<&2, V>, discriminator, key, item, rest), query, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_membership.bend deep @-V:Data -> @+key:String -> @+item:Maybe<&2, V> -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+discriminator:Nat -> @parent:Nat -> @bit:Bool -> @+query:String -> @+value:V -> @lp:(@_:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, lo, query, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.ins(&2, Maybe<&2, V>, lo, key, item, discriminator), query, value)) -> @hp:(@_:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, hi, query, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.ins(&2, Maybe<&2, V>, hi, key, item, discriminator), query, value)) -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, MNode{parent, lo, hi}, query, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_deep(&2, Maybe<&2, V>, item, lo, hi, discriminator, parent, (key, bit)), query, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_membership.bend branch @-V:Data -> @+key:String -> @+item:Maybe<&2, V> -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+discriminator:Nat -> @+parent:Nat -> @descend:Bool -> @+query:String -> @+value:V -> @lp:(@_:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, lo, query, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.ins(&2, Maybe<&2, V>, lo, key, item, discriminator), query, value)) -> @hp:(@_:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, hi, query, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.ins(&2, Maybe<&2, V>, hi, key, item, discriminator), query, value)) -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, MNode{parent, lo, hi}, query, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_if(&2, Maybe<&2, V>, key, item, lo, hi, parent, discriminator, descend), query, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_membership.bend preserves_binding @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+item:Maybe<&2, V> -> @+discriminator:Nat -> @+query:String -> @+value:V -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, tree, query, value) -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, Map.ins(&2, Maybe<&2, V>, tree, key, item, discriminator), query, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_membership.bend preserves_present_lookup @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+stored:String -> @+item:Maybe<&2, V> -> @+query:String -> @+value:V -> @unequal:{String.eq(key, stored) == False{} : Bool} -> @selected:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(Maybe<&2, V>, Map.seek(&2, Maybe<&2, V>, tree, key)) == Some{stored} : Maybe<&2, String>} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, query) == Some{value} : Maybe<&2, V>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.ins(&2, Maybe<&2, V>, tree, key, item, Map.diff(key, stored)), query) == Some{value} : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_nonempty.bend splice_nonempty @-V:Data -> @value:V -> @rest:Map<&2, V> -> @position:Nat -> @route:Pair(String, Bool) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.nonempty(V, Map.ins.splice.bit(&2, V, value, rest, position, route)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_nonempty.bend deep_nonempty @-V:Data -> @value:V -> @lo:Map<&2, V> -> @hi:Map<&2, V> -> @discriminator:Nat -> @position:Nat -> @route:Pair(String, Bool) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.nonempty(V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_deep(&2, V, value, lo, hi, discriminator, position, route)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_nonempty.bend branch_nonempty @-V:Data -> @+key:String -> @value:V -> @lo:Map<&2, V> -> @hi:Map<&2, V> -> @+position:Nat -> @+discriminator:Nat -> @descend:Bool -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.nonempty(V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_if(&2, V, key, value, lo, hi, position, discriminator, descend)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_nonempty.bend insertion_nonempty @-V:Data -> @tree:Map<&2, V> -> @+key:String -> @+value:V -> @+discriminator:Nat -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.nonempty(V, Map.ins(&2, V, tree, key, value, discriminator)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_prefix.bend splice_bit @-V:Data -> @+key:String -> @value:V -> @+rest:Map<&2, V> -> @discriminator:Nat -> @bit:Bool -> @+position:Nat -> @+side:String -> @fresh:{prefix(V, MLeaf{key, value}, position, side) == True{} : Bool} -> @existing:{prefix(V, rest, position, side) == True{} : Bool} -> {prefix(V, Map.ins.splice.bit(&2, V, value, rest, discriminator, (key, bit)), position, side) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_prefix.bend splice @-V:Data -> @+key:String -> @+value:V -> @+rest:Map<&2, V> -> @+discriminator:Nat -> @+position:Nat -> @+side:String -> @fresh:{prefix(V, MLeaf{key, value}, position, side) == True{} : Bool} -> @existing:{prefix(V, rest, position, side) == True{} : Bool} -> {prefix(V, Map.ins.splice(&2, V, discriminator, key, value, rest), position, side) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_prefix.bend deep_bit @-V:Data -> @+key:String -> @+value:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+discriminator:Nat -> @parent:Nat -> @bit:Bool -> @+position:Nat -> @+side:String -> @left:{prefix(V, lo, position, side) == True{} : Bool} -> @right:{prefix(V, hi, position, side) == True{} : Bool} -> @changed_left:{prefix(V, Map.ins(&2, V, lo, key, value, discriminator), position, side) == True{} : Bool} -> @changed_right:{prefix(V, Map.ins(&2, V, hi, key, value, discriminator), position, side) == True{} : Bool} -> {prefix(V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_deep(&2, V, value, lo, hi, discriminator, parent, (key, bit)), position, side) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_prefix.bend branch @-V:Data -> @+key:String -> @+value:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+discriminator:Nat -> @+parent:Nat -> @descend:Bool -> @+position:Nat -> @+side:String -> @fresh:{prefix(V, MLeaf{key, value}, position, side) == True{} : Bool} -> @left:{prefix(V, lo, position, side) == True{} : Bool} -> @right:{prefix(V, hi, position, side) == True{} : Bool} -> @changed_left:{prefix(V, Map.ins(&2, V, lo, key, value, discriminator), position, side) == True{} : Bool} -> @changed_right:{prefix(V, Map.ins(&2, V, hi, key, value, discriminator), position, side) == True{} : Bool} -> {prefix(V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_if(&2, V, key, value, lo, hi, parent, discriminator, descend), position, side) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_prefix.bend preserves_prefix @-V:Data -> @tree:Map<&2, V> -> @+key:String -> @+value:V -> @+discriminator:Nat -> @+position:Nat -> @+side:String -> @+fresh:{prefix(V, MLeaf{key, value}, position, side) == True{} : Bool} -> @+existing:{prefix(V, tree, position, side) == True{} : Bool} -> {prefix(V, Map.ins(&2, V, tree, key, value, discriminator), position, side) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_routes.bend splice_bit @-V:Data -> @+key:String -> @value:V -> @+rest:Map<&2, V> -> @discriminator:Nat -> @bit:Bool -> @+position:Nat -> @+side:Bool -> @fresh:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, MLeaf{key, value}, position, side) == True{} : Bool} -> @existing:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, rest, position, side) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, Map.ins.splice.bit(&2, V, value, rest, discriminator, (key, bit)), position, side) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_routes.bend splice @-V:Data -> @+key:String -> @+value:V -> @+rest:Map<&2, V> -> @+discriminator:Nat -> @+position:Nat -> @+side:Bool -> @fresh:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, MLeaf{key, value}, position, side) == True{} : Bool} -> @existing:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, rest, position, side) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, Map.ins.splice(&2, V, discriminator, key, value, rest), position, side) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_routes.bend deep_bit @-V:Data -> @+key:String -> @+value:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+discriminator:Nat -> @parent:Nat -> @bit:Bool -> @+position:Nat -> @+side:Bool -> @left:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, lo, position, side) == True{} : Bool} -> @right:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, hi, position, side) == True{} : Bool} -> @changed_left:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, Map.ins(&2, V, lo, key, value, discriminator), position, side) == True{} : Bool} -> @changed_right:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, Map.ins(&2, V, hi, key, value, discriminator), position, side) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_deep(&2, V, value, lo, hi, discriminator, parent, (key, bit)), position, side) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_routes.bend branch @-V:Data -> @+key:String -> @+value:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+discriminator:Nat -> @+parent:Nat -> @descend:Bool -> @+position:Nat -> @+side:Bool -> @fresh:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, MLeaf{key, value}, position, side) == True{} : Bool} -> @left:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, lo, position, side) == True{} : Bool} -> @right:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, hi, position, side) == True{} : Bool} -> @changed_left:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, Map.ins(&2, V, lo, key, value, discriminator), position, side) == True{} : Bool} -> @changed_right:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, Map.ins(&2, V, hi, key, value, discriminator), position, side) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_if(&2, V, key, value, lo, hi, parent, discriminator, descend), position, side) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert_routes.bend preserves_routing @-V:Data -> @tree:Map<&2, V> -> @+key:String -> @+value:V -> @+discriminator:Nat -> @+position:Nat -> @+side:Bool -> @+fresh:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, MLeaf{key, value}, position, side) == True{} : Bool} -> @+existing:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, tree, position, side) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, Map.ins(&2, V, tree, key, value, discriminator), position, side) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend route_pair @r:Pair(String, Bool) -> {r == (0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/native_map.routed_key(r), route_bit(r)) : Pair(String, Bool)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend route_shape @+key:String -> @+position:Nat -> {Map.bit(key, position) == (key, route_bit(Map.bit(key, position))) : Pair(String, Bool)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend low_value @-V:Data -> @p:Nat -> @hi:Map<&2, V> -> @r:Pair(Map<&2, V>, V) -> {value(V, Map.lo(&2, V, V, p, hi, r)) == value(V, r) : V} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend high_value @-V:Data -> @p:Nat -> @lo:Map<&2, V> -> @r:Pair(Map<&2, V>, V) -> {value(V, Map.hi(&2, V, V, p, lo, r)) == value(V, r) : V} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend node_left @-V:Data -> @+d:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @e:{Map.bit(key, p) == (key, False{}) : Pair(String, Bool)} -> {lookup(V, d, MNode{p, lo, hi}, key) == lookup(V, d, lo, key) : V} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend node_right @-V:Data -> @+d:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @e:{Map.bit(key, p) == (key, True{}) : Pair(String, Bool)} -> {lookup(V, d, MNode{p, lo, hi}, key) == lookup(V, d, hi, key) : V} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend leaf_same @-V:Data -> @d:V -> @key:String -> @x:V -> {lookup(V, d, MLeaf{key, x}, key) == x : V} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend splice_same_bit @-V:Data -> @+d:V -> @+x:V -> @+rest:Map<&2, V> -> @+p:Nat -> @+key:String -> @bit:Bool -> @e:{Map.bit(key, p) == (key, bit) : Pair(String, Bool)} -> {lookup(V, d, Map.ins.splice.bit(&2, V, x, rest, p, (key, bit)), key) == x : V} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend splice_same @-V:Data -> @d:V -> @x:V -> @rest:Map<&2, V> -> @+p:Nat -> @+key:String -> {lookup(V, d, Map.ins.splice(&2, V, p, key, x, rest), key) == x : V} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend deep_same_bit @-V:Data -> @+d:V -> @+x:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+q:Nat -> @+key:String -> @bit:Bool -> @e:{Map.bit(key, q) == (key, bit) : Pair(String, Bool)} -> @lp:{lookup(V, d, Map.ins(&2, V, lo, key, x, p), key) == x : V} -> @hp:{lookup(V, d, Map.ins(&2, V, hi, key, x, p), key) == x : V} -> {lookup(V, d, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_deep(&2, V, x, lo, hi, p, q, (key, bit)), key) == x : V} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend insertion_branch_same @-V:Data -> @d:V -> @x:V -> @lo:Map<&2, V> -> @hi:Map<&2, V> -> @p:Nat -> @+q:Nat -> @+key:String -> @descend:Bool -> @lp:{lookup(V, d, Map.ins(&2, V, lo, key, x, p), key) == x : V} -> @hp:{lookup(V, d, Map.ins(&2, V, hi, key, x, p), key) == x : V} -> {lookup(V, d, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_if(&2, V, key, x, lo, hi, q, p, descend), key) == x : V} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend insertion_same @-V:Data -> @+d:V -> @m:Map<&2, V> -> @+key:String -> @+x:V -> @+p:Nat -> {lookup(V, d, Map.ins(&2, V, m, key, x, p), key) == x : V} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend seek_low_found @-V:Data -> @p:Nat -> @hi:Map<&2, V> -> @r:Pair(Map<&2, V>, Pair(String, Maybe<&2, String>)) -> {seek_found(V, Map.lo(&2, V, Pair(String, Maybe<&2, String>), p, hi, r)) == seek_found(V, r) : Maybe<&2, String>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend seek_high_found @-V:Data -> @p:Nat -> @lo:Map<&2, V> -> @r:Pair(Map<&2, V>, Pair(String, Maybe<&2, String>)) -> {seek_found(V, Map.hi(&2, V, Pair(String, Maybe<&2, String>), p, lo, r)) == seek_found(V, r) : Maybe<&2, String>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend seek_left @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @e:{Map.bit(key, p) == (key, False{}) : Pair(String, Bool)} -> {seek_found(V, Map.seek(&2, V, MNode{p, lo, hi}, key)) == seek_found(V, Map.seek(&2, V, lo, key)) : Maybe<&2, String>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend seek_right @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @e:{Map.bit(key, p) == (key, True{}) : Pair(String, Bool)} -> {seek_found(V, Map.seek(&2, V, MNode{p, lo, hi}, key)) == seek_found(V, Map.seek(&2, V, hi, key)) : Maybe<&2, String>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend replace_left @-V:Data -> @d:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @+x:V -> @+e:{Map.bit(key, p) == (key, False{}) : Pair(String, Bool)} -> {lookup(V, d, Map.put(&2, V, MNode{p, lo, hi}, key, x), key) == lookup(V, d, Map.put(&2, V, lo, key, x), key) : V} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend replace_right @-V:Data -> @d:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @+x:V -> @+e:{Map.bit(key, p) == (key, True{}) : Pair(String, Bool)} -> {lookup(V, d, Map.put(&2, V, MNode{p, lo, hi}, key, x), key) == lookup(V, d, Map.put(&2, V, hi, key, x), key) : V} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend certificate_left @-V:Data -> @+d:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @+x:V -> @found:Maybe<&2, String> -> @e:{Map.bit(key, p) == (key, False{}) : Pair(String, Bool)} -> @cp:replacement_certificate(V, d, lo, key, x, found) -> replacement_certificate(V, d, MNode{p, lo, hi}, key, x, found) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend certificate_right @-V:Data -> @+d:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @+x:V -> @found:Maybe<&2, String> -> @e:{Map.bit(key, p) == (key, True{}) : Pair(String, Bool)} -> @cp:replacement_certificate(V, d, hi, key, x, found) -> replacement_certificate(V, d, MNode{p, lo, hi}, key, x, found) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend certificate_branch @-V:Data -> @d:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @x:V -> @bit:Bool -> @+e:{Map.bit(key, p) == (key, bit) : Pair(String, Bool)} -> @lp:replacement_certificate(V, d, lo, key, x, seek_found(V, Map.seek(&2, V, lo, key))) -> @hp:replacement_certificate(V, d, hi, key, x, seek_found(V, Map.seek(&2, V, hi, key))) -> replacement_certificate(V, d, MNode{p, lo, hi}, key, x, seek_found(V, Map.seek(&2, V, MNode{p, lo, hi}, key))) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend replacement_at_seek @-V:Data -> @+d:V -> @m:Map<&2, V> -> @+key:String -> @+x:V -> replacement_certificate(V, d, m, key, x, seek_found(V, Map.seek(&2, V, m, key))) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend seek_low_shape @-V:Data -> @p:Nat -> @lo:Map<&2, V> -> @hi:Map<&2, V> -> @key:String -> @r:Pair(Map<&2, V>, Pair(String, Maybe<&2, String>)) -> @e:{r == (lo, key, seek_found(V, r)) : Pair(Map<&2, V>, Pair(String, Maybe<&2, String>))} -> {Map.lo(&2, V, Pair(String, Maybe<&2, String>), p, hi, r) == (MNode{p, lo, hi}, key, seek_found(V, Map.lo(&2, V, Pair(String, Maybe<&2, String>), p, hi, r))) : Pair(Map<&2, V>, Pair(String, Maybe<&2, String>))} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend seek_high_shape @-V:Data -> @p:Nat -> @lo:Map<&2, V> -> @hi:Map<&2, V> -> @key:String -> @r:Pair(Map<&2, V>, Pair(String, Maybe<&2, String>)) -> @e:{r == (hi, key, seek_found(V, r)) : Pair(Map<&2, V>, Pair(String, Maybe<&2, String>))} -> {Map.hi(&2, V, Pair(String, Maybe<&2, String>), p, lo, r) == (MNode{p, lo, hi}, key, seek_found(V, Map.hi(&2, V, Pair(String, Maybe<&2, String>), p, lo, r))) : Pair(Map<&2, V>, Pair(String, Maybe<&2, String>))} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend seek_branch_shape @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @+bit:Bool -> @e:{Map.bit(key, p) == (key, bit) : Pair(String, Bool)} -> @lp:{Map.seek(&2, V, lo, key) == (lo, key, seek_found(V, Map.seek(&2, V, lo, key))) : Pair(Map<&2, V>, Pair(String, Maybe<&2, String>))} -> @hp:{Map.seek(&2, V, hi, key) == (hi, key, seek_found(V, Map.seek(&2, V, hi, key))) : Pair(Map<&2, V>, Pair(String, Maybe<&2, String>))} -> {Map.seek(&2, V, MNode{p, lo, hi}, key) == (MNode{p, lo, hi}, key, seek_found(V, Map.seek(&2, V, MNode{p, lo, hi}, key))) : Pair(Map<&2, V>, Pair(String, Maybe<&2, String>))} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend seek_shape @-V:Data -> @m:Map<&2, V> -> @+key:String -> {Map.seek(&2, V, m, key) == (m, key, seek_found(V, Map.seek(&2, V, m, key))) : Pair(Map<&2, V>, Pair(String, Maybe<&2, String>))} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend set_comparison_case @-V:Data -> @+d:V -> @m:Map<&2, V> -> @+key:String -> @+stored:String -> @x:V -> @c:Cmp -> @e:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/native_map.comparison_tag(String, String.cmp(key, stored)) == c : Cmp} -> @cp:(@equal:{key == stored : String} -> {lookup(V, d, Map.put(&2, V, m, key, x), key) == x : V}) -> {lookup(V, d, Map.set.fin.go(&2, V, m, key, x, ((key, stored), c)), key) == x : V} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend set_found_case @-V:Data -> @d:V -> @m:Map<&2, V> -> @+key:String -> @+stored:String -> @x:V -> @cp:(@equal:{key == stored : String} -> {lookup(V, d, Map.put(&2, V, m, key, x), key) == x : V}) -> {lookup(V, d, Map.set.fin(&2, V, m, key, x, key, stored), key) == x : V} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend set_seek_case @-V:Data -> @d:V -> @m:Map<&2, V> -> @key:String -> @x:V -> @found:Maybe<&2, String> -> @cp:replacement_certificate(V, d, m, key, x, found) -> {lookup(V, d, Map.set.go(&2, V, x, (m, key, found)), key) == x : V} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend set_same @-V:Data -> @+d:V -> @+m:Map<&2, V> -> @+key:String -> @+x:V -> {lookup(V, d, Map.set(&2, V, m, key, x), key) == x : V} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_key_disjoint.bend witnessed_route @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+position:Nat -> @+side:Bool -> @route:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(Maybe<&2, V>, tree, position, side) == True{} : Bool} -> @witness:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_key_lookup.witness(V, tree, key) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.route_bit(Map.bit(key, position)) == side : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_key_disjoint.bend member_route @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+position:Nat -> @+side:Bool -> @route:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(Maybe<&2, V>, tree, position, side) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, tree) == True{} : Bool} -> @member:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, tree), key) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.route_bit(Map.bit(key, position)) == side : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_key_disjoint.bend opposite_case @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+key:String -> @+position:Nat -> @bit:Bool -> @decision:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, hi), key) == bit : Bool} -> @left_route:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(Maybe<&2, V>, lo, position, False{}) == True{} : Bool} -> @right_route:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(Maybe<&2, V>, hi, position, True{}) == True{} : Bool} -> @left_populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, lo) == True{} : Bool} -> @right_populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, hi) == True{} : Bool} -> @left_member:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, lo), key) == True{} : Bool} -> {bit == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_key_disjoint.bend opposite @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+key:String -> @+position:Nat -> @left_route:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(Maybe<&2, V>, lo, position, False{}) == True{} : Bool} -> @right_route:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(Maybe<&2, V>, hi, position, True{}) == True{} : Bool} -> @left_populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, lo) == True{} : Bool} -> @right_populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, hi) == True{} : Bool} -> @left_member:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, lo), key) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, hi), key) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_key_lookup.bend leaf_branch @-V:Data -> @+stored:String -> @item:Maybe<&2, V> -> @+acc:List<&2, String> -> @+key:String -> @same:Bool -> @decision:{String.eq(stored, key) == same : Bool} -> @populated:{Maybe.is_some(&2, V, item) == True{} : Bool} -> @member:{Bool.or(same, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(acc, key)) == True{} : Bool} -> partition(V, MLeaf{stored, item}, acc, key) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_key_lookup.bend lift_high @-V:Data -> @lo:Map<&2, Maybe<&2, V>> -> @hi:Map<&2, Maybe<&2, V>> -> @p:Nat -> @acc:List<&2, String> -> @key:String -> @proof:partition(V, hi, acc, key) -> partition(V, MNode{p, lo, hi}, acc, key) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_key_lookup.bend lift_node @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @p:Nat -> @acc:List<&2, String> -> @key:String -> @high:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys.go(&2, Maybe<&2, V>, hi, acc), key) == True{} : Bool} -> partition(V, hi, acc, key)) -> @proof:partition(V, lo, Map.keys.go(&2, Maybe<&2, V>, hi, acc), key) -> partition(V, MNode{p, lo, hi}, acc, key) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_key_lookup.bend keys_partition @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+acc:List<&2, String> -> @+key:String -> @+populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, tree) == True{} : Bool} -> @member:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys.go(&2, Maybe<&2, V>, tree, acc), key) == True{} : Bool} -> partition(V, tree, acc, key) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_key_lookup.bend empty_accumulator @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @key:String -> @proof:partition(V, tree, [], key) -> witness(V, tree, key) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_key_lookup.bend key_has_leaf @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, tree) == True{} : Bool} -> @member:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, tree), key) == True{} : Bool} -> witness(V, tree, key) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_key_lookup.bend leaf_lookup @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @w:witness(V, tree, key) -> Sigma<&2, &1, V, value => {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == Some{value} : Maybe<&2, V>}> bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_key_lookup.bend key_lookup @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, tree) == True{} : Bool} -> @member:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, tree), key) == True{} : Bool} -> Sigma<&2, &1, V, value => {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == Some{value} : Maybe<&2, V>}> bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_key_membership.bend eq_true @+a:String -> @+b:String -> @same:{a == b : String} -> {String.eq(a, b) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_key_membership.bend or_true @b:Bool -> {Bool.or(b, True{}) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_key_membership.bend member_cons @+head:String -> @+tail:List<&2, String> -> @+key:String -> @member:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(tail, key) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(head <> tail, key) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_key_membership.bend accumulator_member @-V:Data -> @tree:Map<&2, V> -> @+acc:List<&2, String> -> @+key:String -> @member:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(acc, key) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys.go(&2, V, tree, acc), key) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_key_membership.bend leaf_member @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+acc:List<&2, String> -> @+key:String -> @+value:V -> @leaf:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, tree, key, value) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys.go(&2, Maybe<&2, V>, tree, acc), key) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_key_membership.bend included_branch @+head:String -> @+tail:List<&2, String> -> @+ys:List<&2, String> -> @+key:String -> @same:Bool -> @decision:{String.eq(head, key) == same : Bool} -> @member:{Bool.or(same, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(tail, key)) == True{} : Bool} -> @head_in:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(ys, head) == True{} : Bool} -> @recurse:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(tail, key) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(ys, key) == True{} : Bool}) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(ys, key) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_key_membership.bend included_member @xs:List<&2, String> -> @+ys:List<&2, String> -> @+key:String -> @+included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(xs, ys) == True{} : Bool} -> @member:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(xs, key) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(ys, key) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_key_presence.bend available_present @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @w:Sigma<&2, &1, V, value => {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == Some{value} : Maybe<&2, V>}> -> {Maybe.is_some(&2, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_key_presence.bend missing_member @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @bit:Bool -> @decision:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, tree), key) == bit : Bool} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, tree) == True{} : Bool} -> @absent:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == None{} : Maybe<&2, V>} -> {False{} == bit : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_key_presence.bend lookup_case @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @result:Maybe<&2, V> -> @decision:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == result : Maybe<&2, V>} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, tree) == True{} : Bool} -> {Maybe.is_some(&2, V, result) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, tree), key) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_key_presence.bend lookup_presence @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, tree) == True{} : Bool} -> {Maybe.is_some(&2, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, tree), key) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_keys_unique.bend or_assoc @a:Bool -> @b:Bool -> @c:Bool -> {Bool.or(a, Bool.or(b, c)) == Bool.or(Bool.or(a, b), c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_keys_unique.bend member_append @xs:List<&2, String> -> @+ys:List<&2, String> -> @+key:String -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(List.append(&2, String, xs, ys), key) == Bool.or(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(xs, key), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(ys, key)) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_keys_unique.bend not_or @a:Bool -> @b:Bool -> @left:{Bool.not(a) == True{} : Bool} -> @right:{Bool.not(b) == True{} : Bool} -> {Bool.not(Bool.or(a, b)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_keys_unique.bend unique_append @xs:List<&2, String> -> @+ys:List<&2, String> -> @+ux:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.unique(xs) == True{} : Bool} -> @+uy:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.unique(ys) == True{} : Bool} -> @+separate:{apart(xs, ys) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.unique(List.append(&2, String, xs, ys)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_keys_unique.bend keys_go_append @-V:Data -> @tree:Map<&2, V> -> @+acc:List<&2, String> -> @+extra:List<&2, String> -> {Map.keys.go(&2, V, tree, List.append(&2, String, acc, extra)) == List.append(&2, String, Map.keys.go(&2, V, tree, acc), extra) : List<&2, String>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_keys_unique.bend routed_apart @-V:Data -> @xs:List<&2, String> -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+position:Nat -> @+left_route:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(Maybe<&2, V>, lo, position, False{}) == True{} : Bool} -> @+right_route:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(Maybe<&2, V>, hi, position, True{}) == True{} : Bool} -> @+left_populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, lo) == True{} : Bool} -> @+right_populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, hi) == True{} : Bool} -> @+included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(xs, Map.keys(&2, Maybe<&2, V>, lo)) == True{} : Bool} -> {apart(xs, Map.keys(&2, Maybe<&2, V>, hi)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_keys_unique.bend join @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+position:Nat -> @left_route:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(Maybe<&2, V>, lo, position, False{}) == True{} : Bool} -> @right_route:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(Maybe<&2, V>, hi, position, True{}) == True{} : Bool} -> @left_populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, lo) == True{} : Bool} -> @right_populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, hi) == True{} : Bool} -> @left_unique:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.unique(Map.keys(&2, Maybe<&2, V>, lo)) == True{} : Bool} -> @right_unique:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.unique(Map.keys(&2, Maybe<&2, V>, hi)) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.unique(Map.keys(&2, Maybe<&2, V>, MNode{position, lo, hi})) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_keys_unique.bend node_step @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+position:Nat -> @facts:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_critbit_parts.NodeFacts(Maybe<&2, V>, position, lo, hi) -> @+packed:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, MNode{position, lo, hi}) == True{} : Bool} -> @left:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, lo) == True{} : Bool} -> @_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, lo) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.unique(Map.keys(&2, Maybe<&2, V>, lo)) == True{} : Bool}) -> @right:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, hi) == True{} : Bool} -> @_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, hi) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.unique(Map.keys(&2, Maybe<&2, V>, hi)) == True{} : Bool}) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.unique(Map.keys(&2, Maybe<&2, V>, MNode{position, lo, hi})) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_keys_unique.bend unique_keys @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @packed:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, tree) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.unique(Map.keys(&2, Maybe<&2, V>, tree)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend leaf_comparison @-V:Data -> @+key:String -> @+stored:String -> @item:Maybe<&2, V> -> @cmp:Cmp -> @e:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/string_compare.comparison_tag(String, String.cmp(key, stored)) == cmp : Cmp} -> certificate(V, MLeaf{stored, item}, key, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.value(Maybe<&2, V>, Map.get.leaf(Maybe<&2, V>, None{}, item, ((key, stored), cmp)))) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend leaf_lookup @-V:Data -> @+key:String -> @+stored:String -> @+item:Maybe<&2, V> -> certificate(V, MLeaf{stored, item}, key, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, MLeaf{stored, item}, key)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend lift_left @-V:Data -> @lo:Map<&2, Maybe<&2, V>> -> @hi:Map<&2, Maybe<&2, V>> -> @p:Nat -> @key:String -> @found:Maybe<&2, V> -> @cp:certificate(V, lo, key, found) -> certificate(V, MNode{p, lo, hi}, key, found) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend lift_right @-V:Data -> @lo:Map<&2, Maybe<&2, V>> -> @hi:Map<&2, Maybe<&2, V>> -> @p:Nat -> @key:String -> @found:Maybe<&2, V> -> @cp:certificate(V, hi, key, found) -> certificate(V, MNode{p, lo, hi}, key, found) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend branch @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+p:Nat -> @+key:String -> @bit:Bool -> @e:{Map.bit(key, p) == (key, bit) : Pair(String, Bool)} -> @lp:certificate(V, lo, key, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, lo, key)) -> @hp:certificate(V, hi, key, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, hi, key)) -> certificate(V, MNode{p, lo, hi}, key, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, MNode{p, lo, hi}, key)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend lookup_certificate @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+key:String -> certificate(V, tree, key, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend returned_value_is_stored @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @value:V -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == Some{value} : Maybe<&2, V>} -> leaf(V, tree, key, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend accumulator_included @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+acc:List<&2, Sigma<&2, &2, String, _ => Maybe<&2, V>>> -> @+key:String -> @+value:V -> @member:listed(V, acc, key, value) -> listed(V, Map.to_list.go(&2, Maybe<&2, V>, tree, acc), key, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend leaf_enumerated @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+acc:List<&2, Sigma<&2, &2, String, _ => Maybe<&2, V>>> -> @+key:String -> @+value:V -> @member:leaf(V, tree, key, value) -> listed(V, Map.to_list.go(&2, Maybe<&2, V>, tree, acc), key, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend returned_value_enumerated @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+value:V -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == Some{value} : Maybe<&2, V>} -> listed(V, Map.to_list(&2, Maybe<&2, V>, tree), key, value) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_msb.bend zero_bits @+n:Nat -> @w:Word(n) -> @index:Nat -> @zero:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.is_zero(n, w) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bits.nth(n, w, index) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_msb.bend zero_u32_bits @x:U32 -> @index:Nat -> @zero:{U32.is_zero(x) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bits.at(x, index) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_msb.bend beyond @+n:Nat -> @w:Word(n) -> @index:Nat -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bits.nth(n, w, Nat.add(n, index)) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_msb.bend above_branch @+fuel:Nat -> @+x:U32 -> @+index:Nat -> @zero:Bool -> @+e:{U32.is_zero(x) == zero : Bool} -> @exhausted:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bits.at(x, Nat.add(1n+fuel, index)) == False{} : Bool} -> @recur:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bits.at(U32.shr(x), Nat.add(fuel, index)) == False{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bits.at(U32.shr(x), Nat.add(Map.msb.u(fuel, U32.shr(x)), index)) == False{} : Bool}) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bits.at(x, Nat.add(Map.msb.u(1n+fuel, x), index)) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_msb.bend above_with_fuel @+fuel:Nat -> @+x:U32 -> @+index:Nat -> @exhausted:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bits.at(x, Nat.add(fuel, index)) == False{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bits.at(x, Nat.add(Map.msb.u(fuel, x), index)) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_msb.bend above_native_msb @x:U32 -> @+index:Nat -> {Map.bit.u(x, Nat.add(Map.msb.u(32n, x), index)) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_msb.bend shift_width_zero @x:U32 -> {U32.shrn(x, 32n) == 0 : U32} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_msb.bend padded_zero @+n:Nat -> @w:Word(n) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.is_zero(1n+n, Word.shr.pad(n, w)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.is_zero(n, w) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_msb.bend shr_zero_tail @+b:Bool -> @+tail:Word(31n) -> @zero:{U32.is_zero(U32.shr(U32{WCon{b, tail}})) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.is_zero(31n, tail) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_msb.bend last_nonzero_low @x:U32 -> @nonzero:{U32.is_zero(x) == False{} : Bool} -> @shifted_zero:{U32.is_zero(U32.shr(x)) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bits.at(x, 0n) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_msb.bend zero_msb @fuel:Nat -> @+x:U32 -> @zero:{U32.is_zero(x) == True{} : Bool} -> {Map.msb.u(fuel, x) == 0n : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_msb.bend lift_peak @+fuel:Nat -> @+x:U32 -> @nonzero:{U32.is_zero(x) == False{} : Bool} -> @peak:Peak(fuel, U32.shr(x)) -> Peak(1n+fuel, x) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_msb.bend peak_branch @+fuel:Nat -> @+x:U32 -> @zero:Bool -> @+e:{U32.is_zero(U32.shr(x)) == zero : Bool} -> @+nonzero:{U32.is_zero(x) == False{} : Bool} -> @recur:(@_:{U32.is_zero(U32.shr(x)) == False{} : Bool} -> Peak(fuel, U32.shr(x))) -> Peak(1n+fuel, x) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_msb.bend peak_with_fuel @+fuel:Nat -> @+x:U32 -> @exhausted:{U32.is_zero(U32.shrn(x, fuel)) == True{} : Bool} -> @nonzero:{U32.is_zero(x) == False{} : Bool} -> Peak(fuel, x) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_msb.bend native_peak @+x:U32 -> @nonzero:{U32.is_zero(x) == False{} : Bool} -> Peak(32n, x) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_msb.bend xor_zero_equal @+n:Nat -> @a:Word(n) -> @b:Word(n) -> @zero:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.is_zero(n, Word.xor(n, a, b)) == True{} : Bool} -> {a == b : Word(n)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_msb.bend xor_zero_u32_equal @a:U32 -> @b:U32 -> @zero:{U32.is_zero(U32.xor(a, b)) == True{} : Bool} -> {a == b : U32} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_msb.bend equal_u32_comparison @+a:U32 -> @b:U32 -> @eq:{a == b : U32} -> {U32.is_eq(a, b) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_msb.bend xor_nonzero_case @+a:U32 -> @+b:U32 -> @unequal:{U32.is_eq(a, b) == False{} : Bool} -> @z:Bool -> @e:{U32.is_zero(U32.xor(a, b)) == z : Bool} -> {U32.is_zero(U32.xor(a, b)) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_msb.bend unequal_xor_nonzero @+a:U32 -> @+b:U32 -> @unequal:{U32.is_eq(a, b) == False{} : Bool} -> {U32.is_zero(U32.xor(a, b)) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_msb.bend difference_from_peak @+a:U32 -> @+b:U32 -> @peak:Peak(32n, U32.xor(a, b)) -> Difference(a, b) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_msb.bend unequal_character_difference @+a:U32 -> @+b:U32 -> @unequal:{U32.is_eq(a, b) == False{} : Bool} -> Difference(a, b) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_msb.bend bound_branch @+fuel:Nat -> @+x:U32 -> @zero:Bool -> @bound:{Nat.is_le(Map.msb.u(fuel, U32.shr(x)), fuel) == True{} : Bool} -> {Nat.is_le(Map.msb.u.if(fuel, x, zero), 1n+fuel) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_msb.bend native_bound @+fuel:Nat -> @+x:U32 -> {Nat.is_le(Map.msb.u(fuel, x), fuel) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_populated_inverse.bend join_right @-K:Data -> @-V:Data -> @+lo:Map<&2, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>> -> @+hi:Map<&2, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>> -> @acc:List<&2, Sigma<&2, &2, String, _ => Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>>> -> @left:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, lo) == True{} : Bool} -> @pair:Pair({0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, hi) == True{} : Bool}, {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_size.packed(K, V, acc) == True{} : Bool}) -> Pair({Bool.and(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, lo), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, hi)) == True{} : Bool}, {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_size.packed(K, V, acc) == True{} : Bool}) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_populated_inverse.bend join_left @-K:Data -> @-V:Data -> @+lo:Map<&2, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>> -> @+hi:Map<&2, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>> -> @+acc:List<&2, Sigma<&2, &2, String, _ => Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>>> -> @recurse:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_size.packed(K, V, Map.to_list.go(&2, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>, hi, acc)) == True{} : Bool} -> Pair({0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, hi) == True{} : Bool}, {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_size.packed(K, V, acc) == True{} : Bool})) -> @pair:Pair({0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, lo) == True{} : Bool}, {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_size.packed(K, V, Map.to_list.go(&2, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>, hi, acc)) == True{} : Bool}) -> Pair({Bool.and(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, lo), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, hi)) == True{} : Bool}, {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_size.packed(K, V, acc) == True{} : Bool}) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_populated_inverse.bend packed_partition @-K:Data -> @-V:Data -> @tree:Map<&2, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>> -> @+acc:List<&2, Sigma<&2, &2, String, _ => Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>>> -> @packed:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_size.packed(K, V, Map.to_list.go(&2, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>, tree, acc)) == True{} : Bool} -> Pair({0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, tree) == True{} : Bool}, {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_size.packed(K, V, acc) == True{} : Bool}) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_populated_inverse.bend take_tree @-K:Data -> @-V:Data -> @tree:Map<&2, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>> -> @pair:Pair({0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, tree) == True{} : Bool}, {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_size.packed(K, V, []) == True{} : Bool}) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, tree) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_populated_inverse.bend packed_tree @-K:Data -> @-V:Data -> @+tree:Map<&2, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>> -> @packed:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_size.packed(K, V, Map.to_list(&2, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>, tree)) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, tree) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_populated.bend splice_bit @-V:Data -> @+key:String -> @value:Maybe<&2, V> -> @+rest:Map<&2, Maybe<&2, V>> -> @discriminator:Nat -> @bit:Bool -> @fresh:{populated(V, MLeaf{key, value}) == True{} : Bool} -> @existing:{populated(V, rest) == True{} : Bool} -> {populated(V, Map.ins.splice.bit(&2, Maybe<&2, V>, value, rest, discriminator, (key, bit))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_populated.bend splice @-V:Data -> @+key:String -> @+value:Maybe<&2, V> -> @+rest:Map<&2, Maybe<&2, V>> -> @+discriminator:Nat -> @fresh:{populated(V, MLeaf{key, value}) == True{} : Bool} -> @existing:{populated(V, rest) == True{} : Bool} -> {populated(V, Map.ins.splice(&2, Maybe<&2, V>, discriminator, key, value, rest)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_populated.bend deep_bit @-V:Data -> @+key:String -> @+value:Maybe<&2, V> -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+discriminator:Nat -> @parent:Nat -> @bit:Bool -> @left:{populated(V, lo) == True{} : Bool} -> @right:{populated(V, hi) == True{} : Bool} -> @changed_left:{populated(V, Map.ins(&2, Maybe<&2, V>, lo, key, value, discriminator)) == True{} : Bool} -> @changed_right:{populated(V, Map.ins(&2, Maybe<&2, V>, hi, key, value, discriminator)) == True{} : Bool} -> {populated(V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_deep(&2, Maybe<&2, V>, value, lo, hi, discriminator, parent, (key, bit))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_populated.bend branch @-V:Data -> @+key:String -> @+value:Maybe<&2, V> -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+discriminator:Nat -> @+parent:Nat -> @descend:Bool -> @fresh:{populated(V, MLeaf{key, value}) == True{} : Bool} -> @left:{populated(V, lo) == True{} : Bool} -> @right:{populated(V, hi) == True{} : Bool} -> @changed_left:{populated(V, Map.ins(&2, Maybe<&2, V>, lo, key, value, discriminator)) == True{} : Bool} -> @changed_right:{populated(V, Map.ins(&2, Maybe<&2, V>, hi, key, value, discriminator)) == True{} : Bool} -> {populated(V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.ins_if(&2, Maybe<&2, V>, key, value, lo, hi, parent, discriminator, descend)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_populated.bend insertion_preserves_populated @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+value:Maybe<&2, V> -> @+discriminator:Nat -> @+fresh:{populated(V, MLeaf{key, value}) == True{} : Bool} -> @+existing:{populated(V, tree) == True{} : Bool} -> {populated(V, Map.ins(&2, Maybe<&2, V>, tree, key, value, discriminator)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_populated.bend put_branch @-V:Data -> @+key:String -> @+value:Maybe<&2, V> -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @p:Nat -> @bit:Bool -> @left:{populated(V, lo) == True{} : Bool} -> @right:{populated(V, hi) == True{} : Bool} -> @changed_left:{populated(V, Map.put(&2, Maybe<&2, V>, lo, key, value)) == True{} : Bool} -> @changed_right:{populated(V, Map.put(&2, Maybe<&2, V>, hi, key, value)) == True{} : Bool} -> {populated(V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.put_bit(&2, Maybe<&2, V>, value, p, lo, hi, (key, bit))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_populated.bend put_preserves_populated @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+value:Maybe<&2, V> -> @+fresh:{Maybe.is_some(&2, V, value) == True{} : Bool} -> @+existing:{populated(V, tree) == True{} : Bool} -> {populated(V, Map.put(&2, Maybe<&2, V>, tree, key, value)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_populated.bend comparison_case @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+stored:String -> @+value:Maybe<&2, V> -> @c:Cmp -> @compared:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/string_compare.comparison_tag(String, String.cmp(key, stored)) == c : Cmp} -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(Maybe<&2, V>, Map.seek(&2, Maybe<&2, V>, tree, key)) == Some{stored} : Maybe<&2, String>} -> @+fresh:{Maybe.is_some(&2, V, value) == True{} : Bool} -> @valid:{populated(V, tree) == True{} : Bool} -> {populated(V, Map.set.fin.go(&2, Maybe<&2, V>, tree, key, value, ((key, stored), c))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_populated.bend found_case @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+stored:String -> @+value:Maybe<&2, V> -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(Maybe<&2, V>, Map.seek(&2, Maybe<&2, V>, tree, key)) == Some{stored} : Maybe<&2, String>} -> @+fresh:{Maybe.is_some(&2, V, value) == True{} : Bool} -> @valid:{populated(V, tree) == True{} : Bool} -> {populated(V, Map.set.fin(&2, Maybe<&2, V>, tree, key, value, key, stored)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_populated.bend seek_case @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @value:Maybe<&2, V> -> @found:Maybe<&2, String> -> @selected:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(Maybe<&2, V>, Map.seek(&2, Maybe<&2, V>, tree, key)) == found : Maybe<&2, String>} -> @+fresh:{Maybe.is_some(&2, V, value) == True{} : Bool} -> @valid:{populated(V, tree) == True{} : Bool} -> {populated(V, Map.set.go(&2, Maybe<&2, V>, value, (tree, key, found))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_populated.bend set_preserves_populated @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+value:Maybe<&2, V> -> @+fresh:{Maybe.is_some(&2, V, value) == True{} : Bool} -> @valid:{populated(V, tree) == True{} : Bool} -> {populated(V, Map.set(&2, Maybe<&2, V>, tree, key, value)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_prefix_algebra.bend bit_self @bit:Bool -> {Bool.not(Bool.xor(bit, bit)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_prefix_algebra.bend bit_symmetric @a:Bool -> @b:Bool -> {Bool.not(Bool.xor(a, b)) == Bool.not(Bool.xor(b, a)) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_prefix_algebra.bend reflexive @+key:String -> @limit:Nat -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.same_prefix(key, key, limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_prefix_algebra.bend symmetric @+a:String -> @+b:String -> @limit:Nat -> @+prefix:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.same_prefix(a, b, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.same_prefix(b, a, limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_prefix_algebra.bend against_column @-V:Data -> @tree:Map<&2, V> -> @+key:String -> @+value:V -> @+limit:Nat -> @+prefix:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, key, tree, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, tree, MLeaf{key, value}, limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_prefix_algebra.bend bit_transitive @+a:Bool -> @+b:Bool -> @c:Bool -> @ab:{Bool.not(Bool.xor(a, b)) == True{} : Bool} -> @bc:{Bool.not(Bool.xor(b, c)) == True{} : Bool} -> {Bool.not(Bool.xor(a, c)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_prefix_algebra.bend transitive @+a:String -> @+b:String -> @+c:String -> @limit:Nat -> @+ab:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.same_prefix(a, b, limit) == True{} : Bool} -> @+bc:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.same_prefix(b, c, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.same_prefix(a, c, limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_prefix_algebra.bend against_transitive @-V:Data -> @tree:Map<&2, V> -> @+a:String -> @+b:String -> @+limit:Nat -> @+ab:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.same_prefix(a, b, limit) == True{} : Bool} -> @+bc:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, b, tree, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, a, tree, limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_prefix_bounds.bend drop_suffix @extra:Nat -> @+limit:Nat -> @+a:String -> @+b:String -> @prefix:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.same_prefix(a, b, Nat.add(extra, limit)) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.same_prefix(a, b, limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_prefix_bounds.bend weaken @+a:String -> @+b:String -> @+limit:Nat -> @+smaller:Nat -> @bound:{Nat.is_le(smaller, limit) == True{} : Bool} -> @prefix:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.same_prefix(a, b, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.same_prefix(a, b, smaller) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_prefix_bounds.bend against_weaken @-V:Data -> @tree:Map<&2, V> -> @+key:String -> @+limit:Nat -> @+smaller:Nat -> @+bound:{Nat.is_le(smaller, limit) == True{} : Bool} -> @+prefix:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, key, tree, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, key, tree, smaller) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_prefix_bounds.bend common_weaken @-V:Data -> @tree:Map<&2, V> -> @+whole:Map<&2, V> -> @+limit:Nat -> @+smaller:Nat -> @+bound:{Nat.is_le(smaller, limit) == True{} : Bool} -> @+prefix:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, tree, whole, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, tree, whole, smaller) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_prefix_join.bend join_columns @-V:Data -> @tree:Map<&2, V> -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+position:Nat -> @+limit:Nat -> @+left:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, tree, lo, limit) == True{} : Bool} -> @+right:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, tree, hi, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, tree, MNode{position, lo, hi}, limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_prefix_join.bend join_both @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+position:Nat -> @+limit:Nat -> @ll:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, lo, lo, limit) == True{} : Bool} -> @lh:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, lo, hi, limit) == True{} : Bool} -> @hl:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, hi, lo, limit) == True{} : Bool} -> @hh:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, hi, hi, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, MNode{position, lo, hi}, MNode{position, lo, hi}, limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_prefix_join.bend fresh_left @-V:Data -> @+key:String -> @+value:V -> @+rest:Map<&2, V> -> @+position:Nat -> @+limit:Nat -> @+fresh:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, key, rest, limit) == True{} : Bool} -> @existing:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, rest, rest, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, MNode{position, MLeaf{key, value}, rest}, MNode{position, MLeaf{key, value}, rest}, limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_prefix_join.bend fresh_right @-V:Data -> @+key:String -> @+value:V -> @+rest:Map<&2, V> -> @+position:Nat -> @+limit:Nat -> @+fresh:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, key, rest, limit) == True{} : Bool} -> @existing:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, rest, rest, limit) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, MNode{position, rest, MLeaf{key, value}}, MNode{position, rest, MLeaf{key, value}}, limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_prefix_routing.bend bit_at @+a:String -> @+b:String -> @+limit:Nat -> @+position:Nat -> @earlier:{Nat.is_lt(position, limit) == True{} : Bool} -> @prefix:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.same_prefix(a, b, limit) == True{} : Bool} -> {Bool.not(Bool.xor(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.bit_value(Map.bit(a, position)), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.bit_value(Map.bit(b, position)))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_prefix_routing.bend prefix_routing @-V:Data -> @tree:Map<&2, V> -> @+query:String -> @+limit:Nat -> @+position:Nat -> @+side:Bool -> @+earlier:{Nat.is_lt(position, limit) == True{} : Bool} -> @+prefix:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, query, tree, limit) == True{} : Bool} -> @+route:{Bool.not(Bool.xor(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.bit_value(Map.bit(query, position)), side)) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, tree, position, side) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_put_frame.bend leaf_cmp @-V:Data -> @+d:V -> @+query:String -> @+stored:String -> @old:V -> @item:V -> @c:Cmp -> @compared:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/string_compare.comparison_tag(String, String.cmp(query, stored)) == c : Cmp} -> @unequal:{String.eq(query, stored) == False{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.value(V, Map.get.leaf(V, d, item, ((query, stored), c))) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.value(V, Map.get.leaf(V, d, old, ((query, stored), c))) : V} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_put_frame.bend leaf_frame @-V:Data -> @+d:V -> @+query:String -> @+stored:String -> @+old:V -> @+item:V -> @unequal:{String.eq(query, stored) == False{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(V, d, MLeaf{stored, item}, query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(V, d, MLeaf{stored, old}, query) : V} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_put_frame.bend branch @-V:Data -> @+d:V -> @+p:Nat -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+key:String -> @+stored:String -> @+item:V -> @+query:String -> @kb:Bool -> @qb:Bool -> @+kr:{Map.bit(key, p) == (key, kb) : Pair(String, Bool)} -> @+qr:{Map.bit(query, p) == (query, qb) : Pair(String, Bool)} -> @selected:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, MNode{p, lo, hi}, key)) == Some{stored} : Maybe<&2, String>} -> @left:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, lo, key)) == Some{stored} : Maybe<&2, String>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(V, d, Map.put(&2, V, lo, key, item), query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(V, d, lo, query) : V}) -> @right:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, hi, key)) == Some{stored} : Maybe<&2, String>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(V, d, Map.put(&2, V, hi, key, item), query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(V, d, hi, query) : V}) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(V, d, Map.put(&2, V, MNode{p, lo, hi}, key, item), query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(V, d, MNode{p, lo, hi}, query) : V} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_put_frame.bend other_lookup_unchanged @-V:Data -> @tree:Map<&2, V> -> @+d:V -> @+key:String -> @+stored:String -> @+item:V -> @+query:String -> @+unequal:{String.eq(query, stored) == False{} : Bool} -> @selected:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, tree, key)) == Some{stored} : Maybe<&2, String>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(V, d, Map.put(&2, V, tree, key, item), query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(V, d, tree, query) : V} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_put_frame.bend leaf_miss_cmp @-V:Data -> @+d:V -> @+query:String -> @+stored:String -> @item:V -> @c:Cmp -> @compared:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/string_compare.comparison_tag(String, String.cmp(query, stored)) == c : Cmp} -> @unequal:{String.eq(query, stored) == False{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.value(V, Map.get.leaf(V, d, item, ((query, stored), c))) == d : V} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_put_frame.bend leaf_miss @-V:Data -> @+d:V -> @+query:String -> @+stored:String -> @+item:V -> @unequal:{String.eq(query, stored) == False{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(V, d, MLeaf{stored, item}, query) == d : V} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_route_boolean.bend leaf_boolean @+key:String -> @+position:Nat -> @+side:Bool -> @route:{Map.bit(key, position) == (key, side) : Pair(String, Bool)} -> {Bool.not(Bool.xor(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.bit_value(Map.bit(key, position)), side)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_route_boolean.bend routed_boolean @-V:Data -> @tree:Map<&2, V> -> @+position:Nat -> @+side:Bool -> @route:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_routing.routed(V, tree, position, side) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, tree, position, side) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_route_boolean.bend deletion_preserves @-V:Data -> @+tree:Map<&2, V> -> @+key:String -> @+position:Nat -> @+side:Bool -> @route:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, tree, position, side) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, Map.del(&2, V, tree, key), position, side) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend false_true @e:{False{} == True{} : Bool} -> Empty bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend and_left @a:Bool -> @b:Bool -> @e:{Bool.and(a, b) == True{} : Bool} -> {a == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend and_right @a:Bool -> @b:Bool -> @e:{Bool.and(a, b) == True{} : Bool} -> {b == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend equal_bit @bit:Bool -> @side:Bool -> @e:{Bool.not(Bool.xor(bit, side)) == True{} : Bool} -> {bit == side : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend route_projection @r:Pair(String, Bool) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.bit_value(r) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.route_bit(r) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend routed_certificate @-V:Data -> @tree:Map<&2, V> -> @+pos:Nat -> @+side:Bool -> @+e:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, tree, pos, side) == True{} : Bool} -> routed(V, tree, pos, side) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend member_routed @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+value:V -> @+pos:Nat -> @+side:Bool -> @routes:routed(Maybe<&2, V>, tree, pos, side) -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, tree, key, value) -> {Map.bit(key, pos) == (key, side) : Pair(String, Bool)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend duplicate_member @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+value:V -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, tree, key, value) -> Pair(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, tree, key, value), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, tree, key, value)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend lookup_left @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+p:Nat -> @+key:String -> @+value:V -> @routes:routed(Maybe<&2, V>, lo, p, False{}) -> @induction:(@member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, lo, key, value) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, lo, key) == Some{value} : Maybe<&2, V>}) -> @copies:Pair(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, lo, key, value), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, lo, key, value)) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, MNode{p, lo, hi}, key) == Some{value} : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend lookup_right @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+p:Nat -> @+key:String -> @+value:V -> @routes:routed(Maybe<&2, V>, hi, p, True{}) -> @induction:(@member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, hi, key, value) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, hi, key) == Some{value} : Maybe<&2, V>}) -> @copies:Pair(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, hi, key, value), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, hi, key, value)) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, MNode{p, lo, hi}, key) == Some{value} : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend member_lookup @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+value:V -> @invariant:valid(Maybe<&2, V>, tree) -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, tree, key, value) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == Some{value} : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend critbit_certificate @-V:Data -> @tree:Map<&2, V> -> @+e:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, tree) == True{} : Bool} -> valid(V, tree) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend critbit_member_lookup @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @key:String -> @value:V -> @invariant:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @member:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.leaf(V, tree, key, value) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == Some{value} : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_seek_discriminator.bend branch @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+position:Nat -> @+key:String -> @+stored:String -> @bit:Bool -> @route:{Map.bit(key, position) == (key, bit) : Pair(String, Bool)} -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, MNode{position, lo, hi}, key)) == Some{stored} : Maybe<&2, String>} -> @left:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, lo, position, False{}) == True{} : Bool} -> @right:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, hi, position, True{}) == True{} : Bool} -> {Bool.not(Bool.xor(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.bit_value(Map.bit(stored, position)), bit)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_seek_discriminator.bend not_xor_true @b:Bool -> @yes:{b == True{} : Bool} -> @no:{Bool.not(b) == True{} : Bool} -> Empty bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_seek_discriminator.bend difference_not_root @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+position:Nat -> @+key:String -> @+stored:String -> @distinct:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_difference.different(key, stored) -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, MNode{position, lo, hi}, key)) == Some{stored} : Maybe<&2, String>} -> @left:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, lo, position, False{}) == True{} : Bool} -> @right:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, hi, position, True{}) == True{} : Bool} -> @equal:{Map.diff(key, stored) == position : Nat} -> Empty bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_seek_empty.bend branch @-V:Data -> @+p:Nat -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+key:String -> @bit:Bool -> @route:{Map.bit(key, p) == (key, bit) : Pair(String, Bool)} -> @left:{Maybe.is_some(&2, String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, lo, key))) == True{} : Bool} -> @right:{Maybe.is_some(&2, String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, hi, key))) == True{} : Bool} -> {Maybe.is_some(&2, String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, MNode{p, lo, hi}, key))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_seek_empty.bend from_parts @-V:Data -> @+p:Nat -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+key:String -> @facts:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_critbit_parts.NodeFacts(V, p, lo, hi) -> @left:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, lo) == True{} : Bool} -> @_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.nonempty(V, lo) == True{} : Bool} -> {Maybe.is_some(&2, String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, lo, key))) == True{} : Bool}) -> @right:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, hi) == True{} : Bool} -> @_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.nonempty(V, hi) == True{} : Bool} -> {Maybe.is_some(&2, String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, hi, key))) == True{} : Bool}) -> {Maybe.is_some(&2, String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, MNode{p, lo, hi}, key))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_seek_empty.bend nonempty_seek @-V:Data -> @tree:Map<&2, V> -> @+key:String -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, tree) == True{} : Bool} -> @occupied:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.nonempty(V, tree) == True{} : Bool} -> {Maybe.is_some(&2, String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, tree, key))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_seek_empty.bend empty_seek_is_tip @-V:Data -> @tree:Map<&2, V> -> @+key:String -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, tree) == True{} : Bool} -> @missing:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, tree, key)) == None{} : Maybe<&2, String>} -> {tree == MTip{} : Map<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_seek_prefix.bend branch @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @bit:Bool -> @route:{Map.bit(key, p) == (key, bit) : Pair(String, Bool)} -> @+query:String -> @+limit:Nat -> @left:{selected_prefix(query, limit, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, lo, key))) == True{} : Bool} -> @right:{selected_prefix(query, limit, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, hi, key))) == True{} : Bool} -> {selected_prefix(query, limit, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, MNode{p, lo, hi}, key))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_seek_prefix.bend selected_has_prefix @-V:Data -> @tree:Map<&2, V> -> @+key:String -> @+query:String -> @+limit:Nat -> @+prefix:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, query, tree, limit) == True{} : Bool} -> {selected_prefix(query, limit, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, tree, key))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_seek_prefix.bend found_has_prefix @-V:Data -> @+tree:Map<&2, V> -> @+key:String -> @+query:String -> @+limit:Nat -> @+stored:String -> @prefix:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, query, tree, limit) == True{} : Bool} -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, tree, key)) == Some{stored} : Maybe<&2, String>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.same_prefix(query, stored, limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_seek_routes.bend branch @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @bit:Bool -> @route:{Map.bit(key, p) == (key, bit) : Pair(String, Bool)} -> @+position:Nat -> @+side:Bool -> @left:{selected_route(position, side, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, lo, key))) == True{} : Bool} -> @right:{selected_route(position, side, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, hi, key))) == True{} : Bool} -> {selected_route(position, side, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, MNode{p, lo, hi}, key))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_seek_routes.bend selected_has_route @-V:Data -> @tree:Map<&2, V> -> @+key:String -> @+position:Nat -> @+side:Bool -> @+prefix:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, tree, position, side) == True{} : Bool} -> {selected_route(position, side, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, tree, key))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_seek_routes.bend found_has_route @-V:Data -> @+tree:Map<&2, V> -> @+key:String -> @+position:Nat -> @+side:Bool -> @+stored:String -> @prefix:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, tree, position, side) == True{} : Bool} -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, tree, key)) == Some{stored} : Maybe<&2, String>} -> {Bool.not(Bool.xor(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.bit_value(Map.bit(stored, position)), side)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_seek.bend leaf_comparison @-V:Data -> @+key:String -> @+stored:String -> @item:Maybe<&2, V> -> @cmp:Cmp -> @e:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/string_compare.comparison_tag(String, String.cmp(key, stored)) == cmp : Cmp} -> certificate(V, MLeaf{stored, item}, key, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.value(Maybe<&2, V>, Map.get.leaf(Maybe<&2, V>, None{}, item, ((key, stored), cmp)))) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_seek.bend leaf_lookup @-V:Data -> @+key:String -> @+stored:String -> @+item:Maybe<&2, V> -> certificate(V, MLeaf{stored, item}, key, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, MLeaf{stored, item}, key)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_seek.bend lift_left @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+p:Nat -> @+key:String -> @found:Maybe<&2, V> -> @e:{Map.bit(key, p) == (key, False{}) : Pair(String, Bool)} -> @cp:certificate(V, lo, key, found) -> certificate(V, MNode{p, lo, hi}, key, found) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_seek.bend lift_right @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+p:Nat -> @+key:String -> @found:Maybe<&2, V> -> @e:{Map.bit(key, p) == (key, True{}) : Pair(String, Bool)} -> @cp:certificate(V, hi, key, found) -> certificate(V, MNode{p, lo, hi}, key, found) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_seek.bend branch @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+p:Nat -> @+key:String -> @bit:Bool -> @+e:{Map.bit(key, p) == (key, bit) : Pair(String, Bool)} -> @lp:certificate(V, lo, key, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, lo, key)) -> @hp:certificate(V, hi, key, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, hi, key)) -> certificate(V, MNode{p, lo, hi}, key, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, MNode{p, lo, hi}, key)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_seek.bend lookup_certificate @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+key:String -> certificate(V, tree, key, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_seek.bend successful_lookup_seeks_key @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @value:V -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == Some{value} : Maybe<&2, V>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(Maybe<&2, V>, Map.seek(&2, Maybe<&2, V>, tree, key)) == Some{key} : Maybe<&2, String>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_seek.bend successful_replacement_preserves_keys @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @previous:V -> @item:Maybe<&2, V> -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == Some{previous} : Maybe<&2, V>} -> {Map.keys(&2, Maybe<&2, V>, Map.set(&2, Maybe<&2, V>, tree, key, item)) == Map.keys(&2, Maybe<&2, V>, tree) : List<&2, String>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_selected_prefix.bend selected_row @-V:Data -> @tree:Map<&2, V> -> @+whole:Map<&2, V> -> @+key:String -> @+stored:String -> @+limit:Nat -> @+common:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, tree, whole, limit) == True{} : Bool} -> @+found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, whole, key)) == Some{stored} : Maybe<&2, String>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, stored, tree, limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_selected_prefix.bend fresh_difference_prefix @-V:Data -> @+tree:Map<&2, V> -> @+key:String -> @+stored:String -> @common:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, tree, tree, Map.diff(key, stored)) == True{} : Bool} -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, tree, key)) == Some{stored} : Maybe<&2, String>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, key, tree, Map.diff(key, stored)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_set_critbit.bend put_valid @-V:Data -> @+tree:Map<&2, V> -> @+key:String -> @+stored:String -> @+value:V -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, tree, key)) == Some{stored} : Maybe<&2, String>} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, tree) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.put(&2, V, tree, key, value)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_set_critbit.bend comparison_boolean @+key:String -> @+stored:String -> @+c:Cmp -> @compared:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/string_compare.comparison_tag(String, String.cmp(key, stored)) == c : Cmp} -> {String.eq(key, stored) == Cmp.is_eq(c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_set_critbit.bend comparison_case @-V:Data -> @+tree:Map<&2, V> -> @+key:String -> @+stored:String -> @+value:V -> @c:Cmp -> @compared:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/string_compare.comparison_tag(String, String.cmp(key, stored)) == c : Cmp} -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, tree, key)) == Some{stored} : Maybe<&2, String>} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, tree) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.set.fin.go(&2, V, tree, key, value, ((key, stored), c))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_set_critbit.bend found_case @-V:Data -> @+tree:Map<&2, V> -> @+key:String -> @+stored:String -> @+value:V -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, tree, key)) == Some{stored} : Maybe<&2, String>} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, tree) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.set.fin(&2, V, tree, key, value, key, stored)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_set_critbit.bend seek_case @-V:Data -> @+tree:Map<&2, V> -> @+key:String -> @value:V -> @found:Maybe<&2, String> -> @selected:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, tree, key)) == found : Maybe<&2, String>} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, tree) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.set.go(&2, V, value, (tree, key, found))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_set_critbit.bend preserves_critbit @-V:Data -> @+tree:Map<&2, V> -> @+key:String -> @+value:V -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, tree) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.set(&2, V, tree, key, value)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_set_frame.bend comparison_case @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+stored:String -> @+item:Maybe<&2, V> -> @+query:String -> @c:Cmp -> @compared:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/string_compare.comparison_tag(String, String.cmp(key, stored)) == c : Cmp} -> @unequal:{String.eq(query, key) == False{} : Bool} -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(Maybe<&2, V>, Map.seek(&2, Maybe<&2, V>, tree, key)) == Some{stored} : Maybe<&2, String>} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.set.fin.go(&2, Maybe<&2, V>, tree, key, item, ((key, stored), c)), query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, query) : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_set_frame.bend found_case @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+stored:String -> @+item:Maybe<&2, V> -> @+query:String -> @unequal:{String.eq(query, key) == False{} : Bool} -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(Maybe<&2, V>, Map.seek(&2, Maybe<&2, V>, tree, key)) == Some{stored} : Maybe<&2, String>} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.set.fin(&2, Maybe<&2, V>, tree, key, item, key, stored), query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, query) : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_set_frame.bend empty_case @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+item:Maybe<&2, V> -> @+query:String -> @unequal:{String.eq(query, key) == False{} : Bool} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @missing:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(Maybe<&2, V>, Map.seek(&2, Maybe<&2, V>, tree, key)) == None{} : Maybe<&2, String>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, MLeaf{key, item}, query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, query) : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_set_frame.bend seek_case @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+item:Maybe<&2, V> -> @+query:String -> @result:Maybe<&2, String> -> @selected:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(Maybe<&2, V>, Map.seek(&2, Maybe<&2, V>, tree, key)) == result : Maybe<&2, String>} -> @unequal:{String.eq(query, key) == False{} : Bool} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.set.go(&2, Maybe<&2, V>, item, (tree, key, result)), query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, query) : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_set_frame.bend other_lookup_unchanged @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+item:Maybe<&2, V> -> @+query:String -> @unequal:{String.eq(query, key) == False{} : Bool} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, Map.set(&2, Maybe<&2, V>, tree, key, item), query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, query) : Maybe<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_set_membership.bend other @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+value:V -> @+query:String -> @+valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @+populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, tree) == True{} : Bool} -> @unequal:{String.eq(query, key) == False{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, Map.set(&2, Maybe<&2, V>, tree, key, Some{value})), query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, tree), query) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_set_membership.bend same @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+value:V -> @+valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, tree) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, Map.set(&2, Maybe<&2, V>, tree, key, Some{value})), key) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_set_membership.bend membership_branch @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+value:V -> @+query:String -> @equal:Bool -> @decision:{String.eq(query, key) == equal : Bool} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, tree) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, Map.set(&2, Maybe<&2, V>, tree, key, Some{value})), query) == Bool.or(equal, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, tree), query)) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_set_membership.bend membership @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+value:V -> @+query:String -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, tree) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, Map.set(&2, Maybe<&2, V>, tree, key, Some{value})), query) == Bool.or(String.eq(query, key), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, tree), query)) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_set_membership.bend existing_branch @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+value:V -> @+query:String -> @equal:Bool -> @+decision:{String.eq(query, key) == equal : Bool} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, tree) == True{} : Bool} -> @present:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, tree), key) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, Map.set(&2, Maybe<&2, V>, tree, key, Some{value})), query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, tree), query) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_set_membership.bend existing @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+value:V -> @+query:String -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @populated:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_populated.populated(V, tree) == True{} : Bool} -> @present:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, tree), key) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, Map.set(&2, Maybe<&2, V>, tree, key, Some{value})), query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(Map.keys(&2, Maybe<&2, V>, tree), query) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_shape_invariants.bend nonempty @-V:Data -> @tree:Map<&2, V> -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.nonempty(Unit, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_shape.skeleton(V, tree)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.nonempty(V, tree) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_shape_invariants.bend below @-V:Data -> @tree:Map<&2, V> -> @parent:Nat -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(Unit, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_shape.skeleton(V, tree), parent) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, tree, parent) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_shape_invariants.bend routed @-V:Data -> @tree:Map<&2, V> -> @+position:Nat -> @+side:Bool -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(Unit, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_shape.skeleton(V, tree), position, side) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, tree, position, side) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_shape_invariants.bend prefix_against @-V:Data -> @+key:String -> @tree:Map<&2, V> -> @+limit:Nat -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(Unit, key, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_shape.skeleton(V, tree), limit) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, key, tree, limit) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_shape_invariants.bend common_prefix @-V:Data -> @tree:Map<&2, V> -> @+whole:Map<&2, V> -> @+limit:Nat -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(Unit, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_shape.skeleton(V, tree), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_shape.skeleton(V, whole), limit) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, tree, whole, limit) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_shape_invariants.bend critbit @-V:Data -> @tree:Map<&2, V> -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Unit, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_shape.skeleton(V, tree)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, tree) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_shape_invariants.bend replacement_preserves_critbit @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+old:V -> @+value:Maybe<&2, V> -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == Some{old} : Maybe<&2, V>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, Map.set(&2, Maybe<&2, V>, tree, key, value)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_shape.bend lift_left @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @+x:V -> @found:Maybe<&2, String> -> @e:{Map.bit(key, p) == (key, False{}) : Pair(String, Bool)} -> @cp:certificate(V, lo, key, x, found) -> certificate(V, MNode{p, lo, hi}, key, x, found) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_shape.bend lift_right @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @+x:V -> @found:Maybe<&2, String> -> @e:{Map.bit(key, p) == (key, True{}) : Pair(String, Bool)} -> @cp:certificate(V, hi, key, x, found) -> certificate(V, MNode{p, lo, hi}, key, x, found) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_shape.bend branch @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @x:V -> @bit:Bool -> @+e:{Map.bit(key, p) == (key, bit) : Pair(String, Bool)} -> @lp:certificate(V, lo, key, x, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, lo, key))) -> @hp:certificate(V, hi, key, x, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, hi, key))) -> certificate(V, MNode{p, lo, hi}, key, x, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, MNode{p, lo, hi}, key))) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_shape.bend replacement_shape @-V:Data -> @m:Map<&2, V> -> @+key:String -> @+x:V -> certificate(V, m, key, x, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, m, key))) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_shape.bend put_found_shape @-V:Data -> @+m:Map<&2, V> -> @+key:String -> @+x:V -> @stored:String -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, m, key)) == Some{stored} : Maybe<&2, String>} -> {skeleton(V, Map.put(&2, V, m, key, x)) == skeleton(V, m) : Map<&2, Unit>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_shape.bend keys_skeleton_go @-V:Data -> @m:Map<&2, V> -> @+acc:List<&2, String> -> {Map.keys.go(&2, Unit, skeleton(V, m), acc) == Map.keys.go(&2, V, m, acc) : List<&2, String>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_shape.bend set_found_replaces @-V:Data -> @+m:Map<&2, V> -> @+key:String -> @+x:V -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, m, key)) == Some{key} : Maybe<&2, String>} -> {Map.set(&2, V, m, key, x) == Map.put(&2, V, m, key, x) : Map<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_shape.bend set_existing_shape @-V:Data -> @+m:Map<&2, V> -> @+key:String -> @+x:V -> @+found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, m, key)) == Some{key} : Maybe<&2, String>} -> {skeleton(V, Map.set(&2, V, m, key, x)) == skeleton(V, m) : Map<&2, Unit>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_shape.bend set_existing_keys @-V:Data -> @+m:Map<&2, V> -> @+key:String -> @+x:V -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(V, Map.seek(&2, V, m, key)) == Some{key} : Maybe<&2, String>} -> {Map.keys(&2, V, Map.set(&2, V, m, key, x)) == Map.keys(&2, V, m) : List<&2, String>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_splice_critbit.bend splice_bit @-V:Data -> @+key:String -> @+value:V -> @+rest:Map<&2, V> -> @+position:Nat -> @bit:Bool -> @route:{Map.bit(key, position) == (key, bit) : Pair(String, Bool)} -> @fresh:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, key, rest, position) == True{} : Bool} -> @common:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, rest, rest, position) == True{} : Bool} -> @nonempty:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.nonempty(V, rest) == True{} : Bool} -> @below:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, rest, position) == True{} : Bool} -> @opposite:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, rest, position, Bool.not(bit)) == True{} : Bool} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, rest) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.ins.splice.bit(&2, V, value, rest, position, (key, bit))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_splice_critbit.bend preserves_critbit @-V:Data -> @+key:String -> @+value:V -> @+rest:Map<&2, V> -> @+position:Nat -> @fresh:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.prefix_against(V, key, rest, position) == True{} : Bool} -> @common:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.common_prefix(V, rest, rest, position) == True{} : Bool} -> @nonempty:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.nonempty(V, rest) == True{} : Bool} -> @below:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.below(V, rest, position) == True{} : Bool} -> @opposite:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, rest, position, Bool.not(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.route_bit(Map.bit(key, position)))) == True{} : Bool} -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, rest) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.ins.splice(&2, V, position, key, value, rest)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_splice_critbit.bend xor_opposite @a:Bool -> @b:Bool -> @different:{Bool.xor(a, b) == True{} : Bool} -> {Bool.not(Bool.xor(b, Bool.not(a))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_splice_critbit.bend difference_leaf_route @-V:Data -> @+key:String -> @+stored:String -> @value:V -> @distinct:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_difference.different(key, stored) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.routed(V, MLeaf{stored, value}, Map.diff(key, stored), Bool.not(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.route_bit(Map.bit(key, Map.diff(key, stored))))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_splice_critbit.bend singleton_insert_valid @-V:Data -> @+key:String -> @+stored:String -> @+value:V -> @+old:V -> @distinct:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_difference.different(key, stored) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(V, Map.ins(&2, V, MLeaf{stored, old}, key, value, Map.diff(key, stored))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_string_prefix.bend xor_self @b:Bool -> {Bool.xor(b, b) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_string_prefix.bend common_character @+head:Char -> @+a:String -> @+b:String -> @+offset:Nat -> @+bound:{Nat.is_le(offset, 32n) == True{} : Bool} -> Agree(SCon{head, a}, SCon{head, b}, offset) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_string_prefix.bend common_tail @+head:Char -> @+a:String -> @+b:String -> @+offset:Nat -> @agree:Agree(a, b, offset) -> Agree(SCon{head, a}, SCon{head, b}, Nat.add(33n, offset)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_string_prefix.bend common_split @+head:Char -> @+a:String -> @+b:String -> @+offset:Nat -> @split:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_difference_order.Split(32n, offset) -> @earlier:{Nat.is_lt(offset, Nat.add(33n, Map.diff(a, b))) == True{} : Bool} -> @recur:(@i:Nat -> @_:{Nat.is_lt(i, Map.diff(a, b)) == True{} : Bool} -> Agree(a, b, i)) -> Agree(SCon{head, a}, SCon{head, b}, offset) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_string_prefix.bend common_head @+head:Char -> @+a:String -> @+b:String -> @+offset:Nat -> @earlier:{Nat.is_lt(offset, Map.diff(SCon{head, a}, SCon{head, b})) == True{} : Bool} -> @recur:(@i:Nat -> @_:{Nat.is_lt(i, Map.diff(a, b)) == True{} : Bool} -> Agree(a, b, i)) -> Agree(SCon{head, a}, SCon{head, b}, offset) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_string_prefix.bend different_head @+x:U32 -> @+y:U32 -> @+a:String -> @+b:String -> @+offset:Nat -> @+unequal:{U32.is_eq(x, y) == False{} : Bool} -> @earlier:{Nat.is_lt(offset, Map.diff(SCon{Chr{x}, a}, SCon{Chr{y}, b})) == True{} : Bool} -> Agree(SCon{Chr{x}, a}, SCon{Chr{y}, b}, offset) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_string_prefix.bend equal_head @+x:U32 -> @+y:U32 -> @+a:String -> @+b:String -> @+offset:Nat -> @+eq:{x == y : U32} -> @earlier:{Nat.is_lt(offset, Map.diff(SCon{Chr{x}, a}, SCon{Chr{y}, b})) == True{} : Bool} -> @recur:(@i:Nat -> @_:{Nat.is_lt(i, Map.diff(a, b)) == True{} : Bool} -> Agree(a, b, i)) -> Agree(SCon{Chr{x}, a}, SCon{Chr{y}, b}, offset) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_string_prefix.bend head_case @+x:U32 -> @+y:U32 -> @+a:String -> @+b:String -> @+offset:Nat -> @same:Bool -> @eq:{U32.is_eq(x, y) == same : Bool} -> @earlier:{Nat.is_lt(offset, Map.diff(SCon{Chr{x}, a}, SCon{Chr{y}, b})) == True{} : Bool} -> @recur:(@i:Nat -> @_:{Nat.is_lt(i, Map.diff(a, b)) == True{} : Bool} -> Agree(a, b, i)) -> Agree(SCon{Chr{x}, a}, SCon{Chr{y}, b}, offset) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_string_prefix.bend not_before_zero @offset:Nat -> @earlier:{Nat.is_lt(offset, 0n) == True{} : Bool} -> Empty bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_string_prefix.bend native_prefix @a:String -> @b:String -> @+offset:Nat -> @earlier:{Nat.is_lt(offset, Map.diff(a, b)) == True{} : Bool} -> Agree(a, b, offset) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_string_prefix.bend predecessor_less @p:Nat -> @n:Nat -> @bound:{Nat.is_le(1n+p, n) == True{} : Bool} -> {Nat.is_lt(p, n) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_string_prefix.bend invariant_bit @pair:Pair(String, Bool) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.bit_value(pair) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.route_bit(pair) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_string_prefix.bend invariant_agreement @+a:String -> @+b:String -> @+offset:Nat -> @earlier:{Nat.is_lt(offset, Map.diff(a, b)) == True{} : Bool} -> {Bool.xor(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.bit_value(Map.bit(a, offset)), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.bit_value(Map.bit(b, offset))) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_string_prefix.bend prefix_invariant_bound @+a:String -> @+b:String -> @limit:Nat -> @bound:{Nat.is_le(limit, Map.diff(a, b)) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.same_prefix(a, b, limit) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/map_string_prefix.bend native_prefix_invariant @+a:String -> @+b:String -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.same_prefix(a, b, Map.diff(a, b)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend empty_lookup @-V:Data -> @d:V -> @k:String -> {Map.get(V, d, Map.new(&2, V), k) == (MTip{}, d) : Pair(Map<&2, V>, V)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend empty_set @-V:Data -> @k:String -> @v:V -> {Map.set(&2, V, Map.new(&2, V), k, v) == MLeaf{k, v} : Map<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend empty_delete @-V:Data -> @k:String -> {Map.del(&2, V, Map.new(&2, V), k) == MTip{} : Map<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend empty_has @-V:Data -> @k:String -> {Map.has(&2, V, Map.new(&2, V), k) == (MTip{}, False{}) : Pair(Map<&2, V>, Bool)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend zero_character_presence @tail:String -> {Map.bit.go(SCon{'\0', tail}, 0n, 0n) == (SCon{'\0', tail}, True{}) : Pair(String, Bool)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend empty_presence {Map.bit.go("", 0n, 0n) == ("", False{}) : Pair(String, Bool)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend boolean_compare_self @b:Bool -> {Bool.cmp(b, b) == EQ{} : Cmp} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend word_compare_self @n:Nat -> @w:Word(n) -> {Word.cmp(n, w, w) == EQ{} : Cmp} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend character_compare_self @c:Char -> {Char.cmp(c, c) == ((c, c), EQ{}) : Pair(Pair(Char, Char), Cmp)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_compare_self @s:String -> {String.cmp(s, s) == ((s, s), EQ{}) : Pair(Pair(String, String), Cmp)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend singleton_get @-V:Data -> @d:V -> @k:String -> @v:V -> {Map.get(V, d, MLeaf{k, v}, k) == (MLeaf{k, v}, v) : Pair(Map<&2, V>, V)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend singleton_update @-V:Data -> @k:String -> @old:V -> @value:V -> {Map.set(&2, V, MLeaf{k, old}, k, value) == MLeaf{k, value} : Map<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend singleton_delete @-V:Data -> @k:String -> @v:V -> {Map.del(&2, V, MLeaf{k, v}, k) == MTip{} : Map<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend recursive_bit_key @c:Char -> @r:Pair(String, Bool) -> {routed_key(Map.bit.go.rec(c, r)) == SCon{c, routed_key(r)} : String} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend bit_go_preserves_key @key:String -> @+character:Nat -> @+offset:Nat -> {routed_key(Map.bit.go(key, character, offset)) == key : String} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend bit_at_preserves_key @key:String -> @coordinates:Pair(Nat, Nat) -> {routed_key(Map.bit.at(key, coordinates)) == key : String} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend bit_preserves_key @key:String -> @position:Nat -> {routed_key(Map.bit(key, position)) == key : String} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend word_comparison_step @n:Nat -> @a:Word(n) -> @b:Word(n) -> @c:Cmp -> @x:Bool -> @y:Bool -> @proof:comparison_identity(Word(n), a, b, c) -> comparison_identity(Word(1n+n), WCon{x, a}, WCon{y, b}, Word.cmp.fin(x, y, c)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend word_comparison_identity @n:Nat -> @a:Word(n) -> @b:Word(n) -> comparison_identity(Word(n), a, b, Word.cmp(n, a, b)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend comparison_lift @-A:Type -> @-B:Type -> @f:(@_:A -> B) -> @a:A -> @b:A -> @c:Cmp -> @proof:comparison_identity(A, a, b, c) -> comparison_identity(B, f(a), f(b), c) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend character_comparison_identity @a:Char -> @b:Char -> comparison_result_identity(Char, Char.cmp(a, b)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_comparison_rec_identity @h:Char -> @r:Pair(Pair(String, String), Cmp) -> @proof:comparison_result_identity(String, r) -> comparison_result_identity(String, String.cmp.rec(h, h, r)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_comparison_fin_identity @t1:String -> @t2:String -> @hc:Pair(Pair(Char, Char), Cmp) -> @hp:comparison_result_identity(Char, hc) -> @tp:comparison_result_identity(String, String.cmp(t1, t2)) -> comparison_result_identity(String, String.cmp.fin(t1, t2, hc)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_comparison_identity @a:String -> @b:String -> comparison_result_identity(String, String.cmp(a, b)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_comparison_shape_step @h1:Char -> @h2:Char -> @t1:String -> @t2:String -> @c:Cmp -> @tp:{String.cmp(t1, t2) == ((t1, t2), comparison_tag(String, String.cmp(t1, t2))) : Pair(Pair(String, String), Cmp)} -> {String.cmp.fin(t1, t2, ((h1, h2), c)) == ((SCon{h1, t1}, SCon{h2, t2}), comparison_tag(String, String.cmp.fin(t1, t2, ((h1, h2), c)))) : Pair(Pair(String, String), Cmp)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_comparison_shape @a:String -> @b:String -> {String.cmp(a, b) == ((a, b), comparison_tag(String, String.cmp(a, b))) : Pair(Pair(String, String), Cmp)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_comparison_original_identity @+a:String -> @+b:String -> comparison_identity(String, a, b, comparison_tag(String, String.cmp(a, b))) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_equal_from_comparison @a:String -> @b:String -> @e:{comparison_tag(String, String.cmp(a, b)) == EQ{} : Cmp} -> {a == b : String} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_equal_comparison @a:String -> @b:String -> @e:{a == b : String} -> {String.cmp(a, b) == ((a, b), EQ{}) : Pair(Pair(String, String), Cmp)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend difference_empty_left @h:Char -> @tail:String -> {Map.diff("", SCon{h, tail}) == 0n : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend difference_empty_right @h:Char -> @tail:String -> {Map.diff(SCon{h, tail}, "") == 0n : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend difference_common_character @h:Char -> @a:String -> @b:String -> {Map.diff(SCon{h, a}, SCon{h, b}) == Nat.add(33n, Map.diff(a, b)) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend difference_empty_presence @h:Char -> @tail:String -> {Map.bit.go(SCon{h, tail}, Map.diff("", SCon{h, tail}), 0n) == (SCon{h, tail}, True{}) : Pair(String, Bool)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend lookup_leaf_preserves @-V:Data -> @d:V -> @v:V -> @key:String -> @stored:String -> @c:Cmp -> {lookup_map(V, Map.get.leaf(V, d, v, ((key, stored), c))) == MLeaf{stored, v} : Map<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend lookup_lo_projection @-V:Data -> @p:Nat -> @hi:Map<&2, V> -> @r:Pair(Map<&2, V>, V) -> {lookup_map(V, Map.lo(&2, V, V, p, hi, r)) == MNode{p, lookup_map(V, r), hi} : Map<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend lookup_hi_projection @-V:Data -> @p:Nat -> @lo:Map<&2, V> -> @r:Pair(Map<&2, V>, V) -> {lookup_map(V, Map.hi(&2, V, V, p, lo, r)) == MNode{p, lo, lookup_map(V, r)} : Map<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend lookup_branch_preserves @-V:Data -> @+d:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @kb:Pair(String, Bool) -> @lp:(@key:String -> {lookup_map(V, Map.get(V, d, lo, key)) == lo : Map<&2, V>}) -> @hp:(@key:String -> {lookup_map(V, Map.get(V, d, hi, key)) == hi : Map<&2, V>}) -> {lookup_map(V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_bridge.get_bit(V, d, lo, hi, p, kb)) == MNode{p, lo, hi} : Map<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend lookup_preserves_map @-V:Data -> @+d:V -> @m:Map<&2, V> -> @+key:String -> {lookup_map(V, Map.get(V, d, m, key)) == m : Map<&2, V>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend natural_add_associative @a:Nat -> @b:Nat -> @c:Nat -> {Nat.add(a, Nat.add(b, c)) == Nat.add(Nat.add(a, b), c) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend natural_add_right_zero @a:Nat -> {Nat.add(a, 0n) == a : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend keys_accumulator_size @-V:Data -> @m:Map<&2, V> -> @+acc:List<&2, String> -> {List.length(&2, String, Map.keys.go(&2, V, m, acc)) == Nat.add(Map.size(&2, V, m), List.length(&2, String, acc)) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend keys_size @-V:Data -> @+m:Map<&2, V> -> {List.length(&2, String, Map.keys(&2, V, m)) == Map.size(&2, V, m) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend entries_accumulator_size @-V:Data -> @m:Map<&2, V> -> @+acc:List<&2, Sigma<&2, &2, String, _ => V>> -> {List.length(&2, Sigma<&2, &2, String, _ => V>, Map.to_list.go(&2, V, m, acc)) == Nat.add(Map.size(&2, V, m), List.length(&2, Sigma<&2, &2, String, _ => V>, acc)) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend entries_size @-V:Data -> @+m:Map<&2, V> -> {List.length(&2, Sigma<&2, &2, String, _ => V>, Map.to_list(&2, V, m)) == Map.size(&2, V, m) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend increment_maximum_wraps @n:Nat -> {Word.inc(n, Word.not(n, Word.zero(n))) == Word.zero(n) : Word(n)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend zero_detected @n:Nat -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.is_zero(n, Word.zero(n)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend zero_sign @n:Nat -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.last(n, Word.zero(n)) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend divide_zero @+n:Nat -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.div_million(n, Word.zero(n)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.Div{Word.zero(n), 0} : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.Division} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend immortal_duration @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/time.deadline(now, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.I64{Word.zero(64n)}) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.I64{Word.zero(64n)} : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend immortal_deadline @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/time.expired(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.I64{Word.zero(64n)}, now) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend counter_rollover {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.inc(Word.not(64n, Word.zero(64n))) == Word.zero(64n) : Word(64n)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend split_join @+n:Nat -> @+m:Nat -> @a:Word(n) -> @b:Word(m) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.split(n, m, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.join(n, m, a, b)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.Split{a, b} : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.Parts} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend pack_roundtrip @low:U32 -> @high:U32 -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.unpack(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.pack(low, high)) == (low, high) : Pair(U32, U32)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend rejoin_cons @+n:Nat -> @+m:Nat -> @h:Bool -> @parts:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.Parts -> {rejoin(1n+n, m, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.split_cons(n, m, h, parts)) == WCon{h, rejoin(n, m, parts)} : Word(Nat.add(1n+n, m))} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend join_split @+n:Nat -> @+m:Nat -> @w:Word(Nat.add(n, m)) -> {rejoin(n, m, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.split(n, m, w)) == w : Word(Nat.add(n, m))} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend comparison_low_zero_ge @c:Cmp -> @b:Bool -> {Cmp.is_ge(Word.cmp.fin(b, False{}, c)) == Cmp.is_ge(c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend sign_threshold_correspondence @n:Nat -> @w:Word(1n+n) -> {Cmp.is_ge(Word.cmp(1n+n, w, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.sign_threshold(n))) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.last(1n+n, w) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend comparison_low_zero_eq @c:Cmp -> @b:Bool -> {Cmp.is_eq(Word.cmp.fin(b, False{}, c)) == Bool.and(Bool.not(b), Cmp.is_eq(c)) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend zero_comparison_correspondence @+n:Nat -> @w:Word(n) -> {Cmp.is_eq(Word.cmp(n, w, Word.zero(n))) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.is_zero(n, w) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend signed_order_branches @a:Word(64n) -> @b:Word(64n) -> @sa:Bool -> @sb:Bool -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.signed_order(a, b, sa, sb) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.order(a, b, sa, sb) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend signed_order_refines @+a:Word(64n) -> @+b:Word(64n) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.le(a, b) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.order(a, b, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.negative(a), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.negative(b)) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend expiration_sentinel_branch @d:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @immortal:Bool -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/time.expired_choose(d, now, immortal) == Bool.and(Bool.not(immortal), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/time.le(d, now)) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend expiration_refines @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/time.expired(deadline, now) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.expired(deadline, now) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend double_add @a:Nat -> @b:Nat -> {Nat.double(Nat.add(a, b)) == Nat.add(Nat.double(a), Nat.double(b)) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend primitive_word_interpretation @+n:Nat -> @w:Word(n) -> {Word.to_nat(n, w) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.unsigned(n, w) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend join_interpretation @+n:Nat -> @+m:Nat -> @a:Word(n) -> @+b:Word(m) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.unsigned(Nat.add(n, m), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.join(n, m, a, b)) == Nat.add(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.unsigned(n, a), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.scale_binary(n, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.unsigned(m, b))) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend pack_interpretation @low:U32 -> @high:U32 -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.unsigned(64n, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/wide.pack(low, high)) == Nat.add(U32.to_nat(low), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.scale_binary(32n, U32.to_nat(high))) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/protocol_storage.bend detach_present @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_present(K, V, c, code, entry))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/protocol_storage.bend detach_found @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_found(K, V, c, code, found))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/protocol_storage.bend detach @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach(K, V, c, code))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/protocol_storage.bend detach_first @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @order:List<&2, String> -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_first(K, V, c, order))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/protocol_storage.bend detach_oldest @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.detach_oldest(K, V, c))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/protocol_storage.bend prepare_room @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @full:Bool -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.prepare_room(K, V, c, full))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/protocol_storage.bend prepare_found @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.prepare_found(K, V, c, found))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/protocol_storage.bend prepare_add @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.prepare_add(K, V, c, code))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/protocol_storage.bend finish_removal @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @evict:Bool -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.finish_removal(K, V, c, evict)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/protocol_storage.bend refresh_at @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @lifetime:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @invariant:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, c) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.storage_critbit(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.refresh_at(K, V, c, code, entry, lifetime, now)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_bounds.bend le_weaken @a:Nat -> @b:Nat -> @e:{Nat.is_le(a, b) == True{} : Bool} -> {Nat.is_le(a, 1n+b) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_bounds.bend le_transitive @a:Nat -> @b:Nat -> @c:Nat -> @ab:{Nat.is_le(a, b) == True{} : Bool} -> @bc:{Nat.is_le(b, c) == True{} : Bool} -> {Nat.is_le(a, c) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_bounds.bend keep_bound @head:String -> @+tail:List<&2, String> -> @size:Nat -> @eq:Bool -> @bound:{Nat.is_le(List.length(&2, String, tail), size) == True{} : Bool} -> {Nat.is_le(List.length(&2, String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without_keep(head, tail, eq)), 1n+size) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_bounds.bend without_bound @xs:List<&2, String> -> @+key:String -> {Nat.is_le(List.length(&2, String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(xs, key)), List.length(&2, String, xs)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_bounds.bend removal_does_not_grow @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @evict:Bool -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> {Nat.is_le(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_present(K, V, c, code, evict, entry))), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, c)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_bounds.bend removal_preserves_capacity_bound @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @+evict:Bool -> @+entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @bound:{Nat.is_le(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, c), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c)) == True{} : Bool} -> {Nat.is_le(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_present(K, V, c, code, evict, entry))), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_present(K, V, c, code, evict, entry)))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_capacity.bend append_one_length @xs:List<&2, String> -> @+key:String -> {List.length(&2, String, List.append(&2, String, xs, [key])) == 1n+List.length(&2, String, xs) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_capacity.bend present_branch @+head:String -> @+tail:List<&2, String> -> @+key:String -> @equal:Bool -> @present:{Bool.or(equal, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(tail, key)) == True{} : Bool} -> @smaller:(@_:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(tail, key) == True{} : Bool} -> {Nat.is_le(1n+List.length(&2, String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(tail, key)), List.length(&2, String, tail)) == True{} : Bool}) -> {Nat.is_le(1n+List.length(&2, String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without_keep(head, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(tail, key), equal)), 1n+List.length(&2, String, tail)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_capacity.bend present_frees_slot @xs:List<&2, String> -> @+key:String -> @present:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(xs, key) == True{} : Bool} -> {Nat.is_le(1n+List.length(&2, String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(xs, key)), List.length(&2, String, xs)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_capacity.bend move_does_not_grow @+xs:List<&2, String> -> @+key:String -> @present:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(xs, key) == True{} : Bool} -> {Nat.is_le(List.length(&2, String, List.append(&2, String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(xs, key), [key])), List.length(&2, String, xs)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_capacity.bend move_with_room @+xs:List<&2, String> -> @+key:String -> @+cap:Nat -> @room:{Nat.is_le(1n+List.length(&2, String, xs), cap) == True{} : Bool} -> {Nat.is_le(List.length(&2, String, List.append(&2, String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(xs, key), [key])), cap) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_capacity.bend move_bounded @+xs:List<&2, String> -> @+key:String -> @+cap:Nat -> @bound:{Nat.is_le(List.length(&2, String, xs), cap) == True{} : Bool} -> @ready:Either<&1, &1, {Nat.is_le(1n+List.length(&2, String, xs), cap) == True{} : Bool}, {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(xs, key) == True{} : Bool}> -> {Nat.is_le(List.length(&2, String, List.append(&2, String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(xs, key), [key])), cap) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_capacity.bend store_preserves_bound @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @key:K -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @flag:Bool -> @events:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.LruEvent> -> @bound:{Nat.is_le(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, c), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c)) == True{} : Bool} -> @ready:room_or_present(K, V, c, code) -> {Nat.is_le(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.store(K, V, c, code, key, value, deadline, flag, events))), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(K, V, c)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_capacity.bend le_reflexive @n:Nat -> {Nat.is_le(n, n) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_capacity.bend touch_does_not_grow @+xs:List<&2, String> -> @+key:String -> @touch:Bool -> @present:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(xs, key) == True{} : Bool} -> {Nat.is_le(List.length(&2, String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.touch_order(xs, key, touch)), List.length(&2, String, xs)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_membership.bend filter_branch @+head:String -> @+tail:List<&2, String> -> @+removed:String -> @+query:String -> @drop:Bool -> @decision:{String.eq(head, removed) == drop : Bool} -> @unequal:{String.eq(query, removed) == False{} : Bool} -> @induction:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(tail, removed), query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(tail, query) : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without_keep(head, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(tail, removed), drop), query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(head <> tail, query) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_membership.bend filter_other @xs:List<&2, String> -> @+removed:String -> @+query:String -> @+unequal:{String.eq(query, removed) == False{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(xs, removed), query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(xs, query) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_membership.bend keep_included @+head:String -> @+tail:List<&2, String> -> @+ys:List<&2, String> -> @drop:Bool -> @head_in:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(ys, head) == True{} : Bool} -> @tail_in:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(tail, ys) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without_keep(head, tail, drop), ys) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_membership.bend filter_included_left @xs:List<&2, String> -> @+ys:List<&2, String> -> @+removed:String -> @+included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(xs, ys) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(xs, removed), ys) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_membership.bend filter_both_branch @+head:String -> @+tail:List<&2, String> -> @+ys:List<&2, String> -> @+removed:String -> @drop:Bool -> @decision:{String.eq(head, removed) == drop : Bool} -> @head_in:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(ys, head) == True{} : Bool} -> @tail_in:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(tail, removed), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(ys, removed)) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without_keep(head, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(tail, removed), drop), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(ys, removed)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_membership.bend filter_included_both @xs:List<&2, String> -> @+ys:List<&2, String> -> @+removed:String -> @+included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(xs, ys) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(xs, removed), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(ys, removed)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_move_inclusion.bend append_included @xs:List<&2, String> -> @+ys:List<&2, String> -> @+key:String -> @+included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(xs, ys) == True{} : Bool} -> @+present:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(ys, key) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(List.append(&2, String, xs, [key]), ys) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_move_inclusion.bend forward @+xs:List<&2, String> -> @+ys:List<&2, String> -> @+key:String -> @+included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(xs, ys) == True{} : Bool} -> @present:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(ys, key) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(moved(xs, key), ys) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_move_inclusion.bend retained @+xs:List<&2, String> -> @+key:String -> @+query:String -> @present:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(xs, query) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(moved(xs, key), query) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_move_inclusion.bend backward @xs:List<&2, String> -> @+ys:List<&2, String> -> @+key:String -> @+included:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(xs, ys) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.included(xs, moved(ys, key)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_unique.bend or_false_left @a:Bool -> @b:Bool -> @e:{Bool.or(a, b) == False{} : Bool} -> {a == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_unique.bend or_false_right @a:Bool -> @b:Bool -> @e:{Bool.or(a, b) == False{} : Bool} -> {b == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_unique.bend not_true @b:Bool -> @e:{Bool.not(b) == True{} : Bool} -> {b == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_unique.bend keep_absent @+head:String -> @+tail:List<&2, String> -> @+query:String -> @drop:Bool -> @head_absent:{String.eq(head, query) == False{} : Bool} -> @tail_absent:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(tail, query) == False{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without_keep(head, tail, drop), query) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_unique.bend filtering_preserves_absence @xs:List<&2, String> -> @+removed:String -> @+query:String -> @+absent:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(xs, query) == False{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(xs, removed), query) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_unique.bend target_branch @+head:String -> @+tail:List<&2, String> -> @+key:String -> @drop:Bool -> @decision:{String.eq(head, key) == drop : Bool} -> @rest:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(tail, key) == False{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without_keep(head, tail, drop), key) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_unique.bend filtering_removes_target @xs:List<&2, String> -> @+key:String -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(xs, key), key) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_unique.bend keep_unique @+head:String -> @+tail:List<&2, String> -> @drop:Bool -> @absent:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(tail, head) == False{} : Bool} -> @unique:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.unique(tail) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.unique(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without_keep(head, tail, drop)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_unique.bend filtering_preserves_unique @xs:List<&2, String> -> @+key:String -> @+unique:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.unique(xs) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.unique(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(xs, key)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_unique.bend removal_preserves_unique_recency @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @evict:Bool -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @unique:{unique_recency(K, V, c) == True{} : Bool} -> {unique_recency(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_present(K, V, c, code, evict, entry))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_unique.bend equal_comparison @+a:String -> @+b:String -> @cmp:Cmp -> @tag:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/string_compare.comparison_tag(String, String.cmp(a, b)) == cmp : Cmp} -> @eq:{Cmp.is_eq(cmp) == True{} : Bool} -> {a == b : String} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_unique.bend equal_boolean @+a:String -> @+b:String -> @eq:{String.eq(a, b) == True{} : Bool} -> {a == b : String} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_unique.bend unequal_reverse_case @+a:String -> @+b:String -> @unequal:{String.eq(a, b) == False{} : Bool} -> @result:Bool -> @observed:{String.eq(b, a) == result : Bool} -> {String.eq(b, a) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_unique.bend unequal_reverse @+a:String -> @+b:String -> @unequal:{String.eq(a, b) == False{} : Bool} -> {String.eq(b, a) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_unique.bend append_absent @xs:List<&2, String> -> @+key:String -> @+query:String -> @+absent:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(xs, query) == False{} : Bool} -> @+different:{String.eq(key, query) == False{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(List.append(&2, String, xs, [key]), query) == False{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_unique.bend append_fresh_unique @xs:List<&2, String> -> @+key:String -> @+unique:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.unique(xs) == True{} : Bool} -> @+absent:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(xs, key) == False{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.unique(List.append(&2, String, xs, [key])) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_unique.bend move_preserves_unique @+xs:List<&2, String> -> @+key:String -> @unique:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.unique(xs) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.unique(List.append(&2, String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(xs, key), [key])) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_unique.bend touch_preserves_unique @+xs:List<&2, String> -> @+key:String -> @touch:Bool -> @unique:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.unique(xs) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.unique(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.touch_order(xs, key, touch)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_unique.bend store_preserves_unique_recency @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @key:K -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @flag:Bool -> @events:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.LruEvent> -> @unique:{unique_recency(K, V, c) == True{} : Bool} -> {unique_recency(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.store(K, V, c, code, key, value, deadline, flag, events))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_update_membership.bend or_false @b:Bool -> {Bool.or(b, False{}) == b : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_update_membership.bend append_other @xs:List<&2, String> -> @+key:String -> @+query:String -> @+unequal:{String.eq(query, key) == False{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(List.append(&2, String, xs, [key]), query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(xs, query) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_update_membership.bend append_same @xs:List<&2, String> -> @+key:String -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(List.append(&2, String, xs, [key]), key) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_update_membership.bend move_branch @+xs:List<&2, String> -> @+key:String -> @+query:String -> @equal:Bool -> @+decision:{String.eq(query, key) == equal : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(List.append(&2, String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(xs, key), [key]), query) == Bool.or(equal, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(xs, query)) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/recency_update_membership.bend move @+xs:List<&2, String> -> @+key:String -> @+query:String -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(List.append(&2, String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.without(xs, key), [key]), query) == Bool.or(String.eq(query, key), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.member(xs, query)) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refinement.bend initialization @-K:Data -> @-V:Data -> @cap:Nat -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.init(K, V, cap)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/cache.length(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/cache.initial(K, V, cap)) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refinement.bend initialization_empty_lookup @-K:Data -> @-V:Data -> @cap:Nat -> @code:String -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.init(K, V, cap), code) == None{} : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refinement.bend initialization_metrics @-K:Data -> @-V:Data -> @cap:Nat -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.metrics(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.init(K, V, cap)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.zero_metrics : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Metrics} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refinement.bend empty_remove @-K:Data -> @-V:Data -> @encode:(@_:K -> String) -> @cap:Nat -> @key:K -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove(K, V, encode, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.init(K, V, cap), key) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Out{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.init(K, V, cap), None{}, False{}, []} : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Step} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refinement.bend empty_get @-K:Data -> @-V:Data -> @encode:(@_:K -> String) -> @cap:Nat -> @key:K -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.get(K, V, encode, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.init(K, V, cap), key, now) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Out{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.State{cap, MTip{}, [], 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.I64{Word.zero(64n)}, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Counts{Word.zero(64n), Word.zero(64n), Word.zero(64n), Word.zero(64n), Word.inc(64n, Word.zero(64n))}, False{}}, None{}, False{}, []} : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Step} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refinement.bend initial_state_refines @-K:Data -> @-V:Data -> @capacity:Nat -> {abstract(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.init(K, V, capacity)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/cache.initial(K, V, capacity) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/cache.Model} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refinement.bend creation_decision_refines @-K:Data -> @-V:Data -> @capacity:Nat -> @valid:Bool -> {abstract_created(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.new_checked(K, V, capacity, valid)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/cache.create_decision(K, V, capacity, valid) : Result<&2, &2, String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/cache.Model>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refinement.bend construct_refines @-K:Data -> @-V:Data -> @capacity:U32 -> @size:U32 -> @zero:Bool -> @reserved:Bool -> @small:Bool -> {abstract_created(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.construct(K, V, capacity, size, zero, reserved, small)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/cache.construct(K, V, capacity, size, zero, reserved, small) : Result<&2, &2, String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/cache.Model>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refinement.bend new_with_size_refines @-K:Data -> @-V:Data -> @+capacity:U32 -> @+size:U32 -> {abstract_created(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.new_with_size(K, V, capacity, size)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/cache.new_with_size(K, V, capacity, size) : Result<&2, &2, String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/cache.Model>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refinement.bend empty_get_refines @-K:Data -> @-V:Data -> @encode:(@_:K -> String) -> @cap:Nat -> @key:K -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> {observe(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.get(K, V, encode, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.init(K, V, cap), key, now)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/cache.missing_get(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/cache.initial(K, V, cap)) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/cache.Observation} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refinement.bend empty_remove_refines @-K:Data -> @-V:Data -> @encode:(@_:K -> String) -> @cap:Nat -> @key:K -> {observe(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove(K, V, encode, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.init(K, V, cap), key)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/cache.missing_remove(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/cache.initial(K, V, cap)) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/cache.Observation} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refinement.bend set_lifetime_refines @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @ns:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> {abstract(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.set_lifetime(K, V, c, ns)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/cache.set_lifetime(K, V, abstract(K, V, c), ns) : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/cache.Model} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refinement.bend reset_metrics_refines @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> {abstract_reset(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.reset_metrics(K, V, c)) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/cache.reset_metrics(K, V, abstract(K, V, c)) : Pair(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/cache.Model, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Metrics)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refinement.bend lookup_projection_bridge @-K:Data -> @-V:Data -> @result:Pair(Map<&2, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>>, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup_result(K, V, result) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.value(Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>, result) : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refinement.bend store_lookup @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @+key:K -> @+value:V -> @+deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @flag:Bool -> @events:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.LruEvent> -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.store(K, V, c, code, key, value, deadline, flag, events)), code) == Some{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Item{key, value, deadline}} : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refinement.bend lookup_enumerated @-K:Data -> @-V:Data -> @+capacity:Nat -> @+table:Map<&2, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>> -> @+order:List<&2, String> -> @+lifetime:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @+counts:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Metrics -> @+cb:Bool -> @+code:String -> @+entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.State{capacity, table, order, lifetime, counts, cb}, code) == Some{entry} : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_lookup.listed(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, Map.to_list(&2, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>, table), code, entry) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refinement.bend removed_key_absent @-K:Data -> @-V:Data -> @capacity:Nat -> @+table:Map<&2, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>> -> @order:List<&2, String> -> @lifetime:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @counts:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Metrics -> @cb:Bool -> @+code:String -> @evict:Bool -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @invariant:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>, table) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_present(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.State{capacity, table, order, lifetime, counts, cb}, code, evict, entry)), code) == None{} : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refinement.bend cache_lookup_seeks_key @-K:Data -> @-V:Data -> @+capacity:Nat -> @+table:Map<&2, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>> -> @+order:List<&2, String> -> @+lifetime:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @+counts:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Metrics -> @+cb:Bool -> @+code:String -> @+entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @found:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.State{capacity, table, order, lifetime, counts, cb}, code) == Some{entry} : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_insert.seek_found(Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>, Map.seek(&2, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>, table, code)) == Some{code} : Maybe<&2, String>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refinement.bend removal_preserves_lookup_routing @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @evict:Bool -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @invariant:lookup_routing(K, V, c) -> lookup_routing(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_present(K, V, c, code, evict, entry))) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refinement.bend removal_preserves_other_lookup @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+removed:String -> @+key:String -> @evict:Bool -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @invariant:lookup_routing(K, V, c) -> @distinct:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/map_delete_frame.different(key, removed) -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_present(K, V, c, removed, evict, entry)), key) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, c, key) : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refinement.bend removal_preserves_storage_critbit @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @evict:Bool -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @invariant:{storage_critbit(K, V, c) == True{} : Bool} -> {storage_critbit(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.remove_present(K, V, c, code, evict, entry))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refinement.bend store_preserves_storage_critbit @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @key:K -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @flag:Bool -> @events:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.LruEvent> -> @invariant:{storage_critbit(K, V, c) == True{} : Bool} -> {storage_critbit(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.store(K, V, c, code, key, value, deadline, flag, events))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refinement.bend store_other_lookup @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @+key:K -> @+value:V -> @+deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @flag:Bool -> @events:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.LruEvent> -> @+query:String -> @unequal:{String.eq(query, code) == False{} : Bool} -> @invariant:{storage_critbit(K, V, c) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.store(K, V, c, code, key, value, deadline, flag, events)), query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, c, query) : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refresh_lookup.bend live_lookup @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @tracked:Bool -> @query:String -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.read_live(K, V, c, code, entry, tracked)), query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, c, query) : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refresh_lookup.bend miss_lookup @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @query:String -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.finish_miss(K, V, c, True{}), query) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, c, query) : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refresh_lookup.bend live_item @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> {item(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.read_live(K, V, c, code, entry, True{})) == Some{entry} : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refresh_lookup.bend prepare_found @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> @decision:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, c, code) == found : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.refresh_prepare_found(K, V, c, code, found)), code) == item(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.refresh_prepare_found(K, V, c, code, found)) : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refresh_lookup.bend prepare @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.refresh_prepare(K, V, c, code)), code) == item(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.refresh_prepare(K, V, c, code)) : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refresh_lookup.bend successful_prepare @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> @returned:{item(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.refresh_prepare(K, V, c, code)) == Some{entry} : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.lookup(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.refresh_prepare(K, V, c, code)), code) == Some{entry} : Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refresh_lookup.bend live_flag @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry -> {flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.read_live(K, V, c, code, entry, True{})) == Maybe.is_some(&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, item(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.read_live(K, V, c, code, entry, True{}))) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refresh_lookup.bend found_flag @-K:Data -> @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry> -> {flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.refresh_prepare_found(K, V, c, code, found)) == Maybe.is_some(&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, item(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.refresh_prepare_found(K, V, c, code, found))) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refresh_lookup.bend prepare_flag @-K:Data -> @-V:Data -> @+c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @+code:String -> {flag(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.refresh_prepare(K, V, c, code)) == Maybe.is_some(&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry, item(K, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.refresh_prepare(K, V, c, code))) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refresh_representation.bend string_prepare @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @invariant:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.representation(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.string_encode, V, c) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.representation(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.string_encode, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(String, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.refresh_prepare(String, V, c, code))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refresh_representation.bend integer_prepare @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache<0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V> -> @code:String -> @invariant:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.representation(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.integer_encode, V, c) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.representation(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.integer_encode, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.refresh_prepare(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V, c, code))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/refresh_representation.bend word64_prepare @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @code:String -> @invariant:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.representation(Word(64n), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_key_identity.word64_encode, V, c) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.representation(Word(64n), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_key_identity.word64_encode, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(Word(64n), V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/protocol.refresh_prepare(Word(64n), V, c, code))) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/representation_parts.bend string_add_bounded @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @key:String -> @value:V -> @ns:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.representation(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.string_encode, V, c) == True{} : Bool} -> {Nat.is_le(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(String, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(String, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.add_with_lifetime(String, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.string_encode, c, key, value, ns, now))), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(String, V, c)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/representation_parts.bend string_recency @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.representation(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.string_encode, V, c) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_recency.encode_keys(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.string_encode, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_recency.model_order(String, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.abstract(String, V, c))) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_recency.native_order(String, V, c) : List<&2, String>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/representation_parts.bend string_initialized @-V:Data -> @n:Nat -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.representation(String, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.string_encode, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.init(String, V, 1n+n)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/representation_parts.bend integer_add_bounded @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache<0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V> -> @key:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer -> @value:V -> @ns:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.representation(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.integer_encode, V, c) == True{} : Bool} -> {Nat.is_le(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.add_with_lifetime(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.integer_encode, c, key, value, ns, now))), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V, c)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/representation_parts.bend integer_recency @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache<0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V> -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.representation(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.integer_encode, V, c) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_recency.encode_keys(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.integer_encode, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_recency.model_order(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.abstract(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V, c))) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_recency.native_order(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V, c) : List<&2, String>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/representation_parts.bend integer_initialized @-V:Data -> @n:Nat -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.representation(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/codec.integer_encode, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.init(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer, V, 1n+n)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/representation_parts.bend word64_add_bounded @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @key:Word(64n) -> @value:V -> @ns:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.representation(Word(64n), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_key_identity.word64_encode, V, c) == True{} : Bool} -> {Nat.is_le(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.len(Word(64n), V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.step_cache(Word(64n), V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.add_with_lifetime(Word(64n), V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_key_identity.word64_encode, c, key, value, ns, now))), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.capacity(Word(64n), V, c)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/representation_parts.bend word64_recency @-V:Data -> @c:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.Cache -> @valid:{0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.representation(Word(64n), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_key_identity.word64_encode, V, c) == True{} : Bool} -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_recency.encode_keys(Word(64n), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_key_identity.word64_encode, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_recency.model_order(Word(64n), V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/refinement.abstract(Word(64n), V, c))) == 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/abstraction_recency.native_order(Word(64n), V, c) : List<&2, String>} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/representation_parts.bend word64_initialized @-V:Data -> @n:Nat -> {0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/invariants.representation(Word(64n), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/proofs/cache_key_identity.word64_encode, V, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/src/cache.init(Word(64n), V, 1n+n)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend boolean_compare_self @b:Bool -> {Bool.cmp(b, b) == EQ{} : Cmp} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend word_compare_self @n:Nat -> @w:Word(n) -> {Word.cmp(n, w, w) == EQ{} : Cmp} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend character_compare_self @c:Char -> {Char.cmp(c, c) == ((c, c), EQ{}) : Pair(Pair(Char, Char), Cmp)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_compare_self @s:String -> {String.cmp(s, s) == ((s, s), EQ{}) : Pair(Pair(String, String), Cmp)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend word_comparison_step @n:Nat -> @a:Word(n) -> @b:Word(n) -> @c:Cmp -> @x:Bool -> @y:Bool -> @proof:comparison_identity(Word(n), a, b, c) -> comparison_identity(Word(1n+n), WCon{x, a}, WCon{y, b}, Word.cmp.fin(x, y, c)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend word_comparison_identity @n:Nat -> @a:Word(n) -> @b:Word(n) -> comparison_identity(Word(n), a, b, Word.cmp(n, a, b)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend comparison_lift @-A:Type -> @-B:Type -> @f:(@_:A -> B) -> @a:A -> @b:A -> @c:Cmp -> @proof:comparison_identity(A, a, b, c) -> comparison_identity(B, f(a), f(b), c) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend character_comparison_identity @a:Char -> @b:Char -> comparison_result_identity(Char, Char.cmp(a, b)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_comparison_rec_identity @h:Char -> @r:Pair(Pair(String, String), Cmp) -> @proof:comparison_result_identity(String, r) -> comparison_result_identity(String, String.cmp.rec(h, h, r)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_comparison_fin_identity @t1:String -> @t2:String -> @hc:Pair(Pair(Char, Char), Cmp) -> @hp:comparison_result_identity(Char, hc) -> @tp:comparison_result_identity(String, String.cmp(t1, t2)) -> comparison_result_identity(String, String.cmp.fin(t1, t2, hc)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_comparison_identity @a:String -> @b:String -> comparison_result_identity(String, String.cmp(a, b)) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_comparison_shape_step @h1:Char -> @h2:Char -> @t1:String -> @t2:String -> @c:Cmp -> @tp:{String.cmp(t1, t2) == ((t1, t2), comparison_tag(String, String.cmp(t1, t2))) : Pair(Pair(String, String), Cmp)} -> {String.cmp.fin(t1, t2, ((h1, h2), c)) == ((SCon{h1, t1}, SCon{h2, t2}), comparison_tag(String, String.cmp.fin(t1, t2, ((h1, h2), c)))) : Pair(Pair(String, String), Cmp)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_comparison_shape @a:String -> @b:String -> {String.cmp(a, b) == ((a, b), comparison_tag(String, String.cmp(a, b))) : Pair(Pair(String, String), Cmp)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_comparison_original_identity @+a:String -> @+b:String -> comparison_identity(String, a, b, comparison_tag(String, String.cmp(a, b))) bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_equal_from_comparison @a:String -> @b:String -> @e:{comparison_tag(String, String.cmp(a, b)) == EQ{} : Cmp} -> {a == b : String} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_equal_comparison @a:String -> @b:String -> @e:{a == b : String} -> {String.cmp(a, b) == ((a, b), EQ{}) : Pair(Pair(String, String), Cmp)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend natural_add_associative @a:Nat -> @b:Nat -> @c:Nat -> {Nat.add(a, Nat.add(b, c)) == Nat.add(Nat.add(a, b), c) : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend natural_add_right_zero @a:Nat -> {Nat.add(a, 0n) == a : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/word_bounds.bend doubled_bound @a:Nat -> @bound:Nat -> @bit:Bool -> {Nat.is_lt(Nat.add(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.bit_value(bit), Nat.double(a)), Nat.double(bound)) == Nat.is_lt(a, bound) : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/proofs/word_bounds.bend unsigned_bound @+n:Nat -> @w:Word(n) -> {Nat.is_lt(0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.unsigned(n, w), 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/spec/numeric.scale_binary(n, 1n)) == True{} : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/src/cache.bend without @xs:List<&2, String> -> @+key:String -> List<&2, String> bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/src/codec.bend string_roundtrip @s:String -> {string_decode(string_encode(s)) == s : String} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/src/codec.bend natural_roundtrip @n:Nat -> {natural_decode(natural_encode(n)) == n : Nat} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/src/codec.bend integer_roundtrip @n:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer -> {integer_decode(integer_encode(n)) == n : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/src/codec.bend integer_injective @a:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer -> @b:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer -> @e:{integer_encode(a) == integer_encode(b) : String} -> {a == b : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/src/codec.bend string_injective @a:String -> @b:String -> @e:{string_encode(a) == string_encode(b) : String} -> {a == b : String} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/src/codec.bend bit_roundtrip @b:Bool -> {char_bit(bit_char(b)) == b : Bool} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/src/codec.bend word_roundtrip @n:Nat -> @w:Word(n) -> {word_decode(n, word_encode(n, w)) == w : Word(n)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/src/codec.bend word_injective @+n:Nat -> @a:Word(n) -> @b:Word(n) -> @e:{word_encode(n, a) == word_encode(n, b) : String} -> {a == b : Word(n)} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/src/codec.bend string_equality_preserved @a:String -> @b:String -> @e:{a == b : String} -> {string_encode(a) == string_encode(b) : String} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/src/codec.bend integer_equality_preserved @a:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer -> @b:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer -> @e:{a == b : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer} -> {integer_encode(a) == integer_encode(b) : String} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/src/codec.bend word_equality_preserved @n:Nat -> @a:Word(n) -> @b:Word(n) -> @e:{a == b : Word(n)} -> {word_encode(n, a) == word_encode(n, b) : String} bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/src/codec.bend word64_injective @a:Word(64n) -> @b:Word(64n) -> @e:{word64_encode(a) == word64_encode(b) : String} -> {a == b : Word(64n)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/chacha20poly1305.bend poly_key_eq @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.poly_key(key, nonce) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.poly_key(key, nonce) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/chacha20poly1305.bend mac_data_eq @+aad:List<&2, U32> -> @+ct:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.mac_data(aad, ct) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.mac_data(aad, ct) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/chacha20poly1305.bend tag_eq @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+ct:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.tag(key, nonce, aad, ct) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.tag(key, nonce, aad, ct) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/chacha20poly1305.bend seal_eq @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+pt:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.seal(key, nonce, aad, pt) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.seal(key, nonce, aad, pt) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/chacha20poly1305.bend open_tag_eq @+ok:Bool -> @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+ct:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.open_tag(ok, key, nonce, ct) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.open_tag(ok, key, nonce, ct) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/chacha20poly1305.bend open_split_eq @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+ct:List<&2, U32> -> @+t:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.open_split(key, nonce, aad, ct, t) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.open_split(key, nonce, aad, ct, t) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/chacha20poly1305.bend open_len_eq @+short:Bool -> @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+data:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.open_len(short, key, nonce, aad, data) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.open_len(short, key, nonce, aad, data) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/chacha20poly1305.bend open_eq @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+data:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.open(key, nonce, aad, data) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.open(key, nonce, aad, data) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/chacha20poly1305.bend xkey_eq @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.xkey(key, nonce) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.xsubkey(key, nonce) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/chacha20poly1305.bend xnonce_eq @+nonce:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.xnonce(nonce) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.xnonce(nonce) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/chacha20poly1305.bend xseal_eq @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+pt:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.xseal(key, nonce, aad, pt) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.xseal(key, nonce, aad, pt) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/chacha20poly1305.bend xopen_eq @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+data:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.xopen(key, nonce, aad, data) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.xopen(key, nonce, aad, data) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/chacha20poly1305.bend length_append @+xs:List<&2, U32> -> @+ys:List<&2, U32> -> {List.length(&2, U32, List.append(&2, U32, xs, ys)) == Nat.add(List.length(&2, U32, xs), List.length(&2, U32, ys)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/chacha20poly1305.bend prefix_append @+xs:List<&2, U32> -> @+ys:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.prefix(List.length(&2, U32, xs), List.append(&2, U32, xs, ys)) == xs : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/chacha20poly1305.bend suffix_append @+xs:List<&2, U32> -> @+ys:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.suffix(List.length(&2, U32, xs), List.append(&2, U32, xs, ys)) == ys : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/chacha20poly1305.bend add16_not_lt @+a:Nat -> {Nat.is_lt(Nat.add(a, 16n), 16n) == False{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/chacha20poly1305.bend add16_sub @+a:Nat -> {Nat.sub(Nat.add(a, 16n), 16n) == a : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/chacha20poly1305.bend open_append @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+ct:List<&2, U32> -> @+t:List<&2, U32> -> @+ht:{List.length(&2, U32, t) == 16n : Nat} -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.open(key, nonce, aad, List.append(&2, U32, ct, t)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.open_split(key, nonce, aad, ct, t) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/chacha20poly1305.bend roundtrip @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+pt:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.open(key, nonce, aad, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.seal(key, nonce, aad, pt)) == Some{pt} : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/chacha20poly1305.bend open_tag_false @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+ct:List<&2, U32> -> @+t:List<&2, U32> -> @ne:(@_:{t == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.tag(key, nonce, aad, ct) : List<&2, U32>} -> Empty) -> @+b:Bool -> @+hb:{0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/subtle.equal(t, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.tag(key, nonce, aad, ct)) == b : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.open_tag(b, key, nonce, ct) == None{} : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/chacha20poly1305.bend forgery @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+ct:List<&2, U32> -> @+t:List<&2, U32> -> @+ht:{List.length(&2, U32, t) == 16n : Nat} -> @ne:(@_:{t == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.tag(key, nonce, aad, ct) : List<&2, U32>} -> Empty) -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.open(key, nonce, aad, List.append(&2, U32, ct, t)) == None{} : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/chacha20poly1305.bend iforgery @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+ct:List<&2, U32> -> @+t:List<&2, U32> -> @+ht:{List.length(&2, U32, t) == 16n : Nat} -> @ne:(@_:{t == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.tag(key, nonce, aad, ct) : List<&2, U32>} -> Empty) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.open(key, nonce, aad, List.append(&2, U32, ct, t)) == None{} : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/chacha20poly1305.bend iroundtrip @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+pt:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.open(key, nonce, aad, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.seal(key, nonce, aad, pt)) == Some{pt} : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/proof.bend when_same @+ok:Bool -> @+x:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.when(ok, x) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.when_open(ok, Some{x}) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/proof.bend when_open_same @+ok:Bool -> @+r:Maybe<&2, List<&2, U32>> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.when_open(ok, r) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.when_open(ok, r) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/proof.bend valid_true @+alg:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.Alg -> @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+hk:{List.length(&2, U32, key) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.key_size(alg) : Nat} -> @+hn:{List.length(&2, U32, nonce) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.nonce_size(alg) : Nat} -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.valid(alg, key, nonce) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/proof.bend encrypt_valid @+alg:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.Alg -> @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+pt:List<&2, U32> -> @+hk:{List.length(&2, U32, key) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.key_size(alg) : Nat} -> @+hn:{List.length(&2, U32, nonce) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.nonce_size(alg) : Nat} -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.encrypt(alg, key, nonce, aad, pt) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.seal(alg, key, nonce, aad, pt) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/proof.bend decrypt_valid @+alg:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.Alg -> @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+data:List<&2, U32> -> @+hk:{List.length(&2, U32, key) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.key_size(alg) : Nat} -> @+hn:{List.length(&2, U32, nonce) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.nonce_size(alg) : Nat} -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.decrypt(alg, key, nonce, aad, data) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.open(alg, key, nonce, aad, data) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/proof.bend ds_open @+alg:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.Alg -> @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+m:Maybe<&2, List<&2, U32>> -> @+hk:{List.length(&2, U32, key) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.key_size(alg) : Nat} -> @+hn:{List.length(&2, U32, nonce) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.nonce_size(alg) : Nat} -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/aead/laws.decrypt_sealed(alg, key, nonce, aad, m) == open_sealed(alg, key, nonce, aad, m) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/proof.bend os128 @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+m:Maybe<&2, List<&2, U32>> -> {open_sealed(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.AES_128_GCM{}, key, nonce, aad, m) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/aes/api.open128(key, nonce, aad, m) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/proof.bend os256 @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+m:Maybe<&2, List<&2, U32>> -> {open_sealed(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.AES_256_GCM{}, key, nonce, aad, m) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/aes/api.open256(key, nonce, aad, m) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/proof.bend open_seal @+alg:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.Alg -> @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+pt:List<&2, U32> -> @+hk:{List.length(&2, U32, key) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.key_size(alg) : Nat} -> @+hn:{List.length(&2, U32, nonce) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.nonce_size(alg) : Nat} -> {open_sealed(alg, key, nonce, aad, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.seal(alg, key, nonce, aad, pt)) == Some{pt} : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/proof.bend open_forged @+alg:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.Alg -> @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+ct:List<&2, U32> -> @+t:List<&2, U32> -> @+hk:{List.length(&2, U32, key) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.key_size(alg) : Nat} -> @+hn:{List.length(&2, U32, nonce) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.nonce_size(alg) : Nat} -> @+ht:{List.length(&2, U32, t) == 16n : Nat} -> @ne:(@_:{t == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/aead/laws.expected_tag(alg, key, nonce, aad, ct) : List<&2, U32>} -> Empty) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.open(alg, key, nonce, aad, List.append(&2, U32, ct, t)) == None{} : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/proof.bend layout_cp @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+pt:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.seal(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.CHACHA20_POLY1305{}, key, nonce, aad, pt) == sapp(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.encrypt_ct(key, nonce, pt), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.tag(key, nonce, aad, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.encrypt_ct(key, nonce, pt))) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/proof.bend layout_x @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+pt:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.seal(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.XCHACHA20_POLY1305{}, key, nonce, aad, pt) == sapp(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.encrypt_ct(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.xkey(key, nonce), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.xnonce(nonce), pt), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.tag(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.xsubkey(key, nonce), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.xnonce(nonce), aad, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.encrypt_ct(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.xkey(key, nonce), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead/chacha20poly1305.xnonce(nonce), pt))) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/proof.bend open_sound @+alg:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.Alg -> @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+data:List<&2, U32> -> @+p:List<&2, U32> -> @+hk:{List.length(&2, U32, key) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.key_size(alg) : Nat} -> @+hn:{List.length(&2, U32, nonce) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.nonce_size(alg) : Nat} -> @+h:{0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.open(alg, key, nonce, aad, data) == Some{p} : Maybe<&2, List<&2, U32>>} -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aead.seal(alg, key, nonce, aad, p) == Some{data} : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/sound.bend none_some @+p:List<&2, U32> -> @+h:{None{} == Some{p} : Maybe<&2, List<&2, U32>>} -> Empty bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/sound.bend some_inj @+x:List<&2, U32> -> @+p:List<&2, U32> -> @+h:{Some{x} == Some{p} : Maybe<&2, List<&2, U32>>} -> {x == p : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/sound.bend prefix_suffix @+n:Nat -> @+xs:List<&2, U32> -> {List.append(&2, U32, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.prefix(n, xs), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.suffix(n, xs)) == xs : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/sound.bend take_drop @+xs:List<&2, U32> -> @+n:Nat -> {List.append(&2, U32, List.take(&2, U32, xs, n), List.drop(&2, U32, xs, n)) == xs : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/sound.bend c_tag @+ok:Bool -> @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+ct:List<&2, U32> -> @+t:List<&2, U32> -> @+p:List<&2, U32> -> @+hok:{0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/subtle.equal(t, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.tag(key, nonce, aad, ct)) == ok : Bool} -> @+h:{0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.open_tag(ok, key, nonce, ct) == Some{p} : Maybe<&2, List<&2, U32>>} -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.seal(key, nonce, aad, p) == List.append(&2, U32, ct, t) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/sound.bend c_len @+short:Bool -> @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+data:List<&2, U32> -> @+p:List<&2, U32> -> @+h:{0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.open_len(short, key, nonce, aad, data) == Some{p} : Maybe<&2, List<&2, U32>>} -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.seal(key, nonce, aad, p) == data : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/sound.bend chacha_sound @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+data:List<&2, U32> -> @+p:List<&2, U32> -> @+h:{0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.open(key, nonce, aad, data) == Some{p} : Maybe<&2, List<&2, U32>>} -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha20poly1305.seal(key, nonce, aad, p) == data : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/sound.bend g_tag @+ok:Bool -> @+nk:Nat -> @+nr:Nat -> @+key:List<&2, U32> -> @+iv:List<&2, U32> -> @+aad:List<&2, U32> -> @+c:List<&2, U32> -> @+t:List<&2, U32> -> @+p:List<&2, U32> -> @+hok:{0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/subtle.equal(t, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/gcm.tag(nk, nr, key, iv, aad, c)) == ok : Bool} -> @+h:{0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/gcm.accept(ok, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/gcm.gctr(nk, nr, key, c, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/gcm.inc32(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/gcm.j0(iv)))) == Some{p} : Maybe<&2, List<&2, U32>>} -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/gcm.seal(nk, nr, key, iv, aad, p) == List.append(&2, U32, c, t) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/sound.bend g_len @+short:Bool -> @+nk:Nat -> @+nr:Nat -> @+key:List<&2, U32> -> @+iv:List<&2, U32> -> @+aad:List<&2, U32> -> @+input:List<&2, U32> -> @+p:List<&2, U32> -> @+h:{0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/gcm.open_split(nk, nr, key, iv, aad, input, List.length(&2, U32, input), short) == Some{p} : Maybe<&2, List<&2, U32>>} -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/gcm.seal(nk, nr, key, iv, aad, p) == input : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/sound.bend gcm_sound @+nk:Nat -> @+nr:Nat -> @+key:List<&2, U32> -> @+iv:List<&2, U32> -> @+aad:List<&2, U32> -> @+input:List<&2, U32> -> @+p:List<&2, U32> -> @+h:{0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/gcm.open(nk, nr, key, iv, aad, input) == Some{p} : Maybe<&2, List<&2, U32>>} -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/gcm.seal(nk, nr, key, iv, aad, p) == input : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/subtle_eq.bend step @+acc:U32 -> @+x:U32 -> @+y:U32 -> @+e:Bool -> {Bool.and(U32.is_eq(U32.or(acc, U32.xor(x, y)), 0), e) == Bool.and(U32.is_eq(acc, 0), Bool.and(U32.is_eq(x, y), e)) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/subtle_eq.bend fold @+a:List<&2, U32> -> @+b:List<&2, U32> -> @+acc:U32 -> {Bool.and(Nat.is_eq(List.length(&2, U32, a), List.length(&2, U32, b)), U32.is_eq(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/subtle.diff(a, b, acc), 0)) == Bool.and(U32.is_eq(acc, 0), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/subtle.equal(a, b)) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/subtle_eq.bend equal_sound @+a:List<&2, U32> -> @+b:List<&2, U32> -> @+h:{0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/subtle.equal(a, b) == True{} : Bool} -> {a == b : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/subtle_eq.bend equal_refl @+a:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/subtle.equal(a, a) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aead/subtle_eq.bend eq_value @+a:List<&2, U32> -> @+b:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/subtle.eq(a, b) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/subtle.equal(a, b) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/api.bend aes128_encrypt @+key:List<&2, U32> -> @+h:{List.length(&2, U32, key) == 16n : Nat} -> @+n0:U32 -> @+n1:U32 -> @+n2:U32 -> @+n3:U32 -> @+n4:U32 -> @+n5:U32 -> @+n6:U32 -> @+n7:U32 -> @+n8:U32 -> @+n9:U32 -> @+n10:U32 -> @+n11:U32 -> @+aad:List<&2, U32> -> @+pt:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aesgcm.aes128_gcm_encrypt(key, [n0, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11], aad, pt) == Some{0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/gcm.aes_seal(key, [n0, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11], aad, pt)} : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/api.bend aes128_decrypt @+key:List<&2, U32> -> @+h:{List.length(&2, U32, key) == 16n : Nat} -> @+n0:U32 -> @+n1:U32 -> @+n2:U32 -> @+n3:U32 -> @+n4:U32 -> @+n5:U32 -> @+n6:U32 -> @+n7:U32 -> @+n8:U32 -> @+n9:U32 -> @+n10:U32 -> @+n11:U32 -> @+aad:List<&2, U32> -> @+ct:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aesgcm.aes128_gcm_decrypt(key, [n0, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11], aad, ct) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/gcm.aes_open(key, [n0, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11], aad, ct) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/api.bend aes128_roundtrip @+key:List<&2, U32> -> @+h:{List.length(&2, U32, key) == 16n : Nat} -> @+n0:U32 -> @+n1:U32 -> @+n2:U32 -> @+n3:U32 -> @+n4:U32 -> @+n5:U32 -> @+n6:U32 -> @+n7:U32 -> @+n8:U32 -> @+n9:U32 -> @+n10:U32 -> @+n11:U32 -> @+aad:List<&2, U32> -> @+pt:List<&2, U32> -> {open128(key, [n0, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11], aad, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aesgcm.aes128_gcm_encrypt(key, [n0, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11], aad, pt)) == Some{pt} : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/api.bend aes128_forgery @+key:List<&2, U32> -> @+h:{List.length(&2, U32, key) == 16n : Nat} -> @+n0:U32 -> @+n1:U32 -> @+n2:U32 -> @+n3:U32 -> @+n4:U32 -> @+n5:U32 -> @+n6:U32 -> @+n7:U32 -> @+n8:U32 -> @+n9:U32 -> @+n10:U32 -> @+n11:U32 -> @+aad:List<&2, U32> -> @+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 -> @ne:(@_:{[t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15] == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/gcm.aes_tag(key, [n0, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11], aad, c) : List<&2, U32>} -> Empty) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aesgcm.aes128_gcm_decrypt(key, [n0, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11], aad, List.append(&2, U32, c, [t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15])) == None{} : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/api.bend aes256_encrypt @+key:List<&2, U32> -> @+h:{List.length(&2, U32, key) == 32n : Nat} -> @+n0:U32 -> @+n1:U32 -> @+n2:U32 -> @+n3:U32 -> @+n4:U32 -> @+n5:U32 -> @+n6:U32 -> @+n7:U32 -> @+n8:U32 -> @+n9:U32 -> @+n10:U32 -> @+n11:U32 -> @+aad:List<&2, U32> -> @+pt:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aesgcm.aes256_gcm_encrypt(key, [n0, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11], aad, pt) == Some{0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/gcm.aes_seal(key, [n0, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11], aad, pt)} : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/api.bend aes256_decrypt @+key:List<&2, U32> -> @+h:{List.length(&2, U32, key) == 32n : Nat} -> @+n0:U32 -> @+n1:U32 -> @+n2:U32 -> @+n3:U32 -> @+n4:U32 -> @+n5:U32 -> @+n6:U32 -> @+n7:U32 -> @+n8:U32 -> @+n9:U32 -> @+n10:U32 -> @+n11:U32 -> @+aad:List<&2, U32> -> @+ct:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aesgcm.aes256_gcm_decrypt(key, [n0, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11], aad, ct) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/gcm.aes_open(key, [n0, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11], aad, ct) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/api.bend aes256_roundtrip @+key:List<&2, U32> -> @+h:{List.length(&2, U32, key) == 32n : Nat} -> @+n0:U32 -> @+n1:U32 -> @+n2:U32 -> @+n3:U32 -> @+n4:U32 -> @+n5:U32 -> @+n6:U32 -> @+n7:U32 -> @+n8:U32 -> @+n9:U32 -> @+n10:U32 -> @+n11:U32 -> @+aad:List<&2, U32> -> @+pt:List<&2, U32> -> {open256(key, [n0, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11], aad, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aesgcm.aes256_gcm_encrypt(key, [n0, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11], aad, pt)) == Some{pt} : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/api.bend aes256_forgery @+key:List<&2, U32> -> @+h:{List.length(&2, U32, key) == 32n : Nat} -> @+n0:U32 -> @+n1:U32 -> @+n2:U32 -> @+n3:U32 -> @+n4:U32 -> @+n5:U32 -> @+n6:U32 -> @+n7:U32 -> @+n8:U32 -> @+n9:U32 -> @+n10:U32 -> @+n11:U32 -> @+aad:List<&2, U32> -> @+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 -> @ne:(@_:{[t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15] == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/gcm.aes_tag(key, [n0, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11], aad, c) : List<&2, U32>} -> Empty) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aesgcm.aes256_gcm_decrypt(key, [n0, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11], aad, List.append(&2, U32, c, [t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15])) == None{} : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/api.bend aes128_encrypt_l @+key:List<&2, U32> -> @+h:{List.length(&2, U32, key) == 16n : Nat} -> @+nonce:List<&2, U32> -> @+hn:{List.length(&2, U32, nonce) == 12n : Nat} -> @+aad:List<&2, U32> -> @+pt:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aesgcm.aes128_gcm_encrypt(key, nonce, aad, pt) == Some{0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/gcm.aes_seal(key, nonce, aad, pt)} : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/api.bend aes128_decrypt_l @+key:List<&2, U32> -> @+h:{List.length(&2, U32, key) == 16n : Nat} -> @+nonce:List<&2, U32> -> @+hn:{List.length(&2, U32, nonce) == 12n : Nat} -> @+aad:List<&2, U32> -> @+ct:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aesgcm.aes128_gcm_decrypt(key, nonce, aad, ct) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/gcm.aes_open(key, nonce, aad, ct) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/api.bend aes128_roundtrip_l @+key:List<&2, U32> -> @+h:{List.length(&2, U32, key) == 16n : Nat} -> @+nonce:List<&2, U32> -> @+hn:{List.length(&2, U32, nonce) == 12n : Nat} -> @+aad:List<&2, U32> -> @+pt:List<&2, U32> -> {open128(key, nonce, aad, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aesgcm.aes128_gcm_encrypt(key, nonce, aad, pt)) == Some{pt} : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/api.bend aes128_forgery_t @+key:List<&2, U32> -> @+h:{List.length(&2, U32, key) == 16n : Nat} -> @+n0:U32 -> @+n1:U32 -> @+n2:U32 -> @+n3:U32 -> @+n4:U32 -> @+n5:U32 -> @+n6:U32 -> @+n7:U32 -> @+n8:U32 -> @+n9:U32 -> @+n10:U32 -> @+n11:U32 -> @+aad:List<&2, U32> -> @+c:List<&2, U32> -> @+t:List<&2, U32> -> @+ht:{List.length(&2, U32, t) == 16n : Nat} -> @ne:(@_:{t == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/gcm.aes_tag(key, [n0, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11], aad, c) : List<&2, U32>} -> Empty) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aesgcm.aes128_gcm_decrypt(key, [n0, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11], aad, List.append(&2, U32, c, t)) == None{} : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/api.bend aes128_forgery_l @+key:List<&2, U32> -> @+h:{List.length(&2, U32, key) == 16n : Nat} -> @+nonce:List<&2, U32> -> @+hn:{List.length(&2, U32, nonce) == 12n : Nat} -> @+aad:List<&2, U32> -> @+c:List<&2, U32> -> @+t:List<&2, U32> -> @+ht:{List.length(&2, U32, t) == 16n : Nat} -> @ne:(@_:{t == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/gcm.aes_tag(key, nonce, aad, c) : List<&2, U32>} -> Empty) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aesgcm.aes128_gcm_decrypt(key, nonce, aad, List.append(&2, U32, c, t)) == None{} : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/api.bend aes256_encrypt_l @+key:List<&2, U32> -> @+h:{List.length(&2, U32, key) == 32n : Nat} -> @+nonce:List<&2, U32> -> @+hn:{List.length(&2, U32, nonce) == 12n : Nat} -> @+aad:List<&2, U32> -> @+pt:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aesgcm.aes256_gcm_encrypt(key, nonce, aad, pt) == Some{0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/gcm.aes_seal(key, nonce, aad, pt)} : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/api.bend aes256_decrypt_l @+key:List<&2, U32> -> @+h:{List.length(&2, U32, key) == 32n : Nat} -> @+nonce:List<&2, U32> -> @+hn:{List.length(&2, U32, nonce) == 12n : Nat} -> @+aad:List<&2, U32> -> @+ct:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aesgcm.aes256_gcm_decrypt(key, nonce, aad, ct) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/gcm.aes_open(key, nonce, aad, ct) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/api.bend aes256_roundtrip_l @+key:List<&2, U32> -> @+h:{List.length(&2, U32, key) == 32n : Nat} -> @+nonce:List<&2, U32> -> @+hn:{List.length(&2, U32, nonce) == 12n : Nat} -> @+aad:List<&2, U32> -> @+pt:List<&2, U32> -> {open256(key, nonce, aad, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aesgcm.aes256_gcm_encrypt(key, nonce, aad, pt)) == Some{pt} : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/api.bend aes256_forgery_t @+key:List<&2, U32> -> @+h:{List.length(&2, U32, key) == 32n : Nat} -> @+n0:U32 -> @+n1:U32 -> @+n2:U32 -> @+n3:U32 -> @+n4:U32 -> @+n5:U32 -> @+n6:U32 -> @+n7:U32 -> @+n8:U32 -> @+n9:U32 -> @+n10:U32 -> @+n11:U32 -> @+aad:List<&2, U32> -> @+c:List<&2, U32> -> @+t:List<&2, U32> -> @+ht:{List.length(&2, U32, t) == 16n : Nat} -> @ne:(@_:{t == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/gcm.aes_tag(key, [n0, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11], aad, c) : List<&2, U32>} -> Empty) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aesgcm.aes256_gcm_decrypt(key, [n0, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11], aad, List.append(&2, U32, c, t)) == None{} : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/api.bend aes256_forgery_l @+key:List<&2, U32> -> @+h:{List.length(&2, U32, key) == 32n : Nat} -> @+nonce:List<&2, U32> -> @+hn:{List.length(&2, U32, nonce) == 12n : Nat} -> @+aad:List<&2, U32> -> @+c:List<&2, U32> -> @+t:List<&2, U32> -> @+ht:{List.length(&2, U32, t) == 16n : Nat} -> @ne:(@_:{t == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/gcm.aes_tag(key, nonce, aad, c) : List<&2, U32>} -> Empty) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aesgcm.aes256_gcm_decrypt(key, nonce, aad, List.append(&2, U32, c, t)) == None{} : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/cipher.bend quad_cong @+a:U32 -> @+b:U32 -> @+c:U32 -> @+d:U32 -> @+a2:U32 -> @+b2:U32 -> @+c2:U32 -> @+d2:U32 -> @+ea:{a == a2 : U32} -> @+eb:{b == b2 : U32} -> @+ec:{c == c2 : U32} -> @+ed:{d == d2 : U32} -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.W{a, b, c, d} == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.W{a2, b2, c2, d2} : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/cipher.bend state_cong @+a:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> @+b:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> @+c:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> @+d:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> @+a2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> @+b2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> @+c2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> @+d2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> @+ea:{a == a2 : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad} -> @+eb:{b == b2 : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad} -> @+ec:{c == c2 : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad} -> @+ed:{d == d2 : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad} -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.S{a, b, c, d} == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.S{a2, b2, c2, d2} : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/cipher.bend sub_word_ok @+w:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/aes.sub_word(w) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.sub_word(w) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/cipher.bend sub_bytes_ok @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/aes.sub_bytes(s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.sub_bytes(s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/cipher.bend shift_rows_ok @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/aes.shift_rows(s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.shift_rows(s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/cipher.bend xor4_cong @+p:U32 -> @+q:U32 -> @+r:U32 -> @+s:U32 -> @+p2:U32 -> @+q2:U32 -> @+r2:U32 -> @+s2:U32 -> @+ep:{p == p2 : U32} -> @+eq:{q == q2 : U32} -> @+er:{r == r2 : U32} -> @+es:{s == s2 : U32} -> {U32.xor(U32.xor(U32.xor(p, q), r), s) == U32.xor(U32.xor(U32.xor(p2, q2), r2), s2) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/cipher.bend mix_column_ok @+w:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/aes.mix_column(w) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.mix_column(w) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/cipher.bend mix_columns_ok @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/aes.mix_columns(s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.mix_columns(s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/cipher.bend xor_word_ok @+a:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> @+b:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/aes.xor_word(a, b) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.xor_word(a, b) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/cipher.bend ark_ok @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.State -> @+w0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> @+w1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> @+w2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> @+w3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/aes.add_round_key(s, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.S{w0, w1, w2, w3}) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.add_round_key(s, w0, w1, w2, w3) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/cipher.bend round_ok @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.State -> @+w0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> @+w1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> @+w2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> @+w3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/aes.round(s, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.S{w0, w1, w2, w3}) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.add_round_key(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.mix_columns(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.shift_rows(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.sub_bytes(s))), w0, w1, w2, w3) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/cipher.bend last_round_ok @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.State -> @+w0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> @+w1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> @+w2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> @+w3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/aes.last_round(s, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.S{w0, w1, w2, w3}) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.add_round_key(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.shift_rows(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.sub_bytes(s)), w0, w1, w2, w3) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/cipher.bend rounds_ok @+n:Nat -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.State -> @+w:List<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/aes.rounds(n, s, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/aes.round_keys(w)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.rounds(n, s, w) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/cipher.bend cipher_ok @+nr:Nat -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.State -> @+w:List<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/aes.cipher(nr, s, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/aes.round_keys(w)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.cipher(nr, s, w) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/cipher.bend rot_word_ok @+w:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/aes.rot_word(w) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.rot_word(w) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/cipher.bend xpow_ok @+n:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/aes.xpow(n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.xpow(n) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/cipher.bend rcon_ok @+j:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/aes.rcon(j) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.rcon(j) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/cipher.bend key_words_ok @+key:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/aes.key_words(key) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.key_words(key) : List<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/cipher.bend get_word_ok @+ws:List<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad> -> @+n:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/aes.get_word(ws, n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.nth_word(ws, n) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/cipher.bend core_ok @+k:Nat -> @+big:Bool -> @+q:Nat -> @+temp:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/aes.schedule_core(k, big, q, temp) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.transform(k, big, q, temp) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/cipher.bend next_ok @+nk:Nat -> @+i:Nat -> @+h:List<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/aes.next_word(nk, i, h) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.next_word(nk, i, h) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/cipher.bend grow_ok @+n:Nat -> @+nk:Nat -> @+i:Nat -> @+h:List<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/aes.grow(n, nk, i, h) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.expand(n, nk, i, h) : List<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.Quad>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/cipher.bend expand_ok @+nk:Nat -> @+nr:Nat -> @+key:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/aes.expand(nk, nr, key) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/aes.round_keys(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.key_expansion(nk, nr, key)) : List<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.State>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/cipher.bend encrypt_ok @+nk:Nat -> @+nr:Nat -> @+key:List<&2, U32> -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/aes.encrypt(nk, nr, key, s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.encrypt(nk, nr, key, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/inverse.bend inverse_unit_bits @+b0:Bool -> @+b1:Bool -> @+b2:Bool -> @+b3:Bool -> @+b4:Bool -> @+b5:Bool -> @+b6:Bool -> @+b7:Bool -> @+b8:Bool -> @+b9:Bool -> @+b10:Bool -> @+b11:Bool -> @+b12:Bool -> @+b13:Bool -> @+b14:Bool -> @+b15:Bool -> @+b16:Bool -> @+b17:Bool -> @+b18:Bool -> @+b19:Bool -> @+b20:Bool -> @+b21:Bool -> @+b22:Bool -> @+b23:Bool -> @+b24:Bool -> @+b25:Bool -> @+b26:Bool -> @+b27:Bool -> @+b28:Bool -> @+b29:Bool -> @+b30:Bool -> @+b31:Bool -> @+h:{U32.is_eq(U32.and(255, U32{WCon{b0, WCon{b1, WCon{b2, WCon{b3, WCon{b4, WCon{b5, WCon{b6, WCon{b7, WCon{b8, WCon{b9, WCon{b10, WCon{b11, WCon{b12, WCon{b13, WCon{b14, WCon{b15, WCon{b16, WCon{b17, WCon{b18, WCon{b19, WCon{b20, WCon{b21, WCon{b22, WCon{b23, WCon{b24, WCon{b25, WCon{b26, WCon{b27, WCon{b28, WCon{b29, WCon{b30, WCon{b31, WNil{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}), 0) == False{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.mul(U32{WCon{b0, WCon{b1, WCon{b2, WCon{b3, WCon{b4, WCon{b5, WCon{b6, WCon{b7, WCon{b8, WCon{b9, WCon{b10, WCon{b11, WCon{b12, WCon{b13, WCon{b14, WCon{b15, WCon{b16, WCon{b17, WCon{b18, WCon{b19, WCon{b20, WCon{b21, WCon{b22, WCon{b23, WCon{b24, WCon{b25, WCon{b26, WCon{b27, WCon{b28, WCon{b29, WCon{b30, WCon{b31, WNil{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.inverse(U32{WCon{b0, WCon{b1, WCon{b2, WCon{b3, WCon{b4, WCon{b5, WCon{b6, WCon{b7, WCon{b8, WCon{b9, WCon{b10, WCon{b11, WCon{b12, WCon{b13, WCon{b14, WCon{b15, WCon{b16, WCon{b17, WCon{b18, WCon{b19, WCon{b20, WCon{b21, WCon{b22, WCon{b23, WCon{b24, WCon{b25, WCon{b26, WCon{b27, WCon{b28, WCon{b29, WCon{b30, WCon{b31, WNil{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}})) == 1 : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/inverse.bend inverse_unit @+x:U32 -> @+h:{U32.is_eq(U32.and(255, x), 0) == False{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.mul(x, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.inverse(x)) == 1 : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/inverse.bend inverse_zero {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.inverse(0) == 0 : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/proof.bend open128_same @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+m:Maybe<&2, List<&2, U32>> -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/aes/laws.open128(key, nonce, aad, m) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/aes/api.open128(key, nonce, aad, m) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/proof.bend open256_same @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+aad:List<&2, U32> -> @+m:Maybe<&2, List<&2, U32>> -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/aes/laws.open256(key, nonce, aad, m) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/aes/api.open256(key, nonce, aad, m) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/sbox.bend sbox_byte_bits @+b0:Bool -> @+b1:Bool -> @+b2:Bool -> @+b3:Bool -> @+b4:Bool -> @+b5:Bool -> @+b6:Bool -> @+b7:Bool -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/sbox.sbox(U32{WCon{b0, WCon{b1, WCon{b2, WCon{b3, WCon{b4, WCon{b5, WCon{b6, WCon{b7, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.sbox(U32{WCon{b0, WCon{b1, WCon{b2, WCon{b3, WCon{b4, WCon{b5, WCon{b6, WCon{b7, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WCon{False{}, WNil{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/sbox.bend sbox_bits @+b0:Bool -> @+b1:Bool -> @+b2:Bool -> @+b3:Bool -> @+b4:Bool -> @+b5:Bool -> @+b6:Bool -> @+b7:Bool -> @+b8:Bool -> @+b9:Bool -> @+b10:Bool -> @+b11:Bool -> @+b12:Bool -> @+b13:Bool -> @+b14:Bool -> @+b15:Bool -> @+b16:Bool -> @+b17:Bool -> @+b18:Bool -> @+b19:Bool -> @+b20:Bool -> @+b21:Bool -> @+b22:Bool -> @+b23:Bool -> @+b24:Bool -> @+b25:Bool -> @+b26:Bool -> @+b27:Bool -> @+b28:Bool -> @+b29:Bool -> @+b30:Bool -> @+b31:Bool -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/sbox.sbox(U32{WCon{b0, WCon{b1, WCon{b2, WCon{b3, WCon{b4, WCon{b5, WCon{b6, WCon{b7, WCon{b8, WCon{b9, WCon{b10, WCon{b11, WCon{b12, WCon{b13, WCon{b14, WCon{b15, WCon{b16, WCon{b17, WCon{b18, WCon{b19, WCon{b20, WCon{b21, WCon{b22, WCon{b23, WCon{b24, WCon{b25, WCon{b26, WCon{b27, WCon{b28, WCon{b29, WCon{b30, WCon{b31, WNil{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.sbox(U32{WCon{b0, WCon{b1, WCon{b2, WCon{b3, WCon{b4, WCon{b5, WCon{b6, WCon{b7, WCon{b8, WCon{b9, WCon{b10, WCon{b11, WCon{b12, WCon{b13, WCon{b14, WCon{b15, WCon{b16, WCon{b17, WCon{b18, WCon{b19, WCon{b20, WCon{b21, WCon{b22, WCon{b23, WCon{b24, WCon{b25, WCon{b26, WCon{b27, WCon{b28, WCon{b29, WCon{b30, WCon{b31, WNil{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/sbox.bend sbox_ok @+x:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/sbox.sbox(x) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.sbox(x) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/sbox.bend xtime_bits @b0:Bool -> @b1:Bool -> @b2:Bool -> @b3:Bool -> @b4:Bool -> @b5:Bool -> @b6:Bool -> @b7:Bool -> @b8:Bool -> @b9:Bool -> @b10:Bool -> @b11:Bool -> @b12:Bool -> @b13:Bool -> @b14:Bool -> @b15:Bool -> @b16:Bool -> @b17:Bool -> @b18:Bool -> @b19:Bool -> @b20:Bool -> @b21:Bool -> @b22:Bool -> @b23:Bool -> @b24:Bool -> @b25:Bool -> @b26:Bool -> @b27:Bool -> @b28:Bool -> @b29:Bool -> @b30:Bool -> @b31:Bool -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/sbox.xtime(U32{WCon{b0, WCon{b1, WCon{b2, WCon{b3, WCon{b4, WCon{b5, WCon{b6, WCon{b7, WCon{b8, WCon{b9, WCon{b10, WCon{b11, WCon{b12, WCon{b13, WCon{b14, WCon{b15, WCon{b16, WCon{b17, WCon{b18, WCon{b19, WCon{b20, WCon{b21, WCon{b22, WCon{b23, WCon{b24, WCon{b25, WCon{b26, WCon{b27, WCon{b28, WCon{b29, WCon{b30, WCon{b31, WNil{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.mul(2, U32{WCon{b0, WCon{b1, WCon{b2, WCon{b3, WCon{b4, WCon{b5, WCon{b6, WCon{b7, WCon{b8, WCon{b9, WCon{b10, WCon{b11, WCon{b12, WCon{b13, WCon{b14, WCon{b15, WCon{b16, WCon{b17, WCon{b18, WCon{b19, WCon{b20, WCon{b21, WCon{b22, WCon{b23, WCon{b24, WCon{b25, WCon{b26, WCon{b27, WCon{b28, WCon{b29, WCon{b30, WCon{b31, WNil{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/sbox.bend xtime_ok @+x:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/sbox.xtime(x) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.mul(2, x) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/sbox.bend mul3_bits @b0:Bool -> @b1:Bool -> @b2:Bool -> @b3:Bool -> @b4:Bool -> @b5:Bool -> @b6:Bool -> @b7:Bool -> @b8:Bool -> @b9:Bool -> @b10:Bool -> @b11:Bool -> @b12:Bool -> @b13:Bool -> @b14:Bool -> @b15:Bool -> @b16:Bool -> @b17:Bool -> @b18:Bool -> @b19:Bool -> @b20:Bool -> @b21:Bool -> @b22:Bool -> @b23:Bool -> @b24:Bool -> @b25:Bool -> @b26:Bool -> @b27:Bool -> @b28:Bool -> @b29:Bool -> @b30:Bool -> @b31:Bool -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/sbox.mul3(U32{WCon{b0, WCon{b1, WCon{b2, WCon{b3, WCon{b4, WCon{b5, WCon{b6, WCon{b7, WCon{b8, WCon{b9, WCon{b10, WCon{b11, WCon{b12, WCon{b13, WCon{b14, WCon{b15, WCon{b16, WCon{b17, WCon{b18, WCon{b19, WCon{b20, WCon{b21, WCon{b22, WCon{b23, WCon{b24, WCon{b25, WCon{b26, WCon{b27, WCon{b28, WCon{b29, WCon{b30, WCon{b31, WNil{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.mul(3, U32{WCon{b0, WCon{b1, WCon{b2, WCon{b3, WCon{b4, WCon{b5, WCon{b6, WCon{b7, WCon{b8, WCon{b9, WCon{b10, WCon{b11, WCon{b12, WCon{b13, WCon{b14, WCon{b15, WCon{b16, WCon{b17, WCon{b18, WCon{b19, WCon{b20, WCon{b21, WCon{b22, WCon{b23, WCon{b24, WCon{b25, WCon{b26, WCon{b27, WCon{b28, WCon{b29, WCon{b30, WCon{b31, WNil{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/sbox.bend mul3_ok @+x:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/aes/sbox.mul3(x) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/aes/aes.mul(3, x) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/api.bend digest_size @h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> {Pair.snd(Array, U32, Array.size(U32, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.digest(h))) == 16 : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/api.bend capacity_gate @a:Array -> @+n:Nat -> @+capacity:U32 -> @invalid:{Nat.is_le(n, Nat.mul(4n, U32.to_nat(capacity))) == False{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.sized(n, (a, capacity)) == None{} : Maybe<&1, Array>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/array.bend reify @a:Array -> Sigma<&2, &1, Tree, t => {a == thaw(t) : Array}> bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/array.bend reify_node @-l:Array -> @-r:Array -> @left:Sigma<&2, &1, Tree, t => {l == thaw(t) : Array}> -> @right:Sigma<&2, &1, Tree, t => {r == thaw(t) : Array}> -> Sigma<&2, &1, Tree, t => {ANode{l, r} == thaw(t) : Array}> bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read31_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @+w30:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read31(index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(0n, index, 32, False{}, 0n, t, h, [w30, w29, w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read30_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read30(index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(1n, index, 31, False{}, 0n, t, h, [w29, w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read29_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read29(index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(2n, index, 30, False{}, 0n, t, h, [w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read28_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read28(index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(3n, index, 29, False{}, 0n, t, h, [w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read27_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read27(index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(4n, index, 28, False{}, 0n, t, h, [w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read26_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read26(index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(5n, index, 27, False{}, 0n, t, h, [w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read25_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read25(index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(6n, index, 26, False{}, 0n, t, h, [w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read24_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read24(index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(7n, index, 25, False{}, 0n, t, h, [w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read23_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read23(index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(8n, index, 24, False{}, 0n, t, h, [w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read22_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read22(index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(9n, index, 23, False{}, 0n, t, h, [w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read21_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read21(index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(10n, index, 22, False{}, 0n, t, h, [w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read20_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read20(index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(11n, index, 21, False{}, 0n, t, h, [w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read19_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read19(index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(12n, index, 20, False{}, 0n, t, h, [w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read18_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read18(index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(13n, index, 19, False{}, 0n, t, h, [w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read17_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read17(index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(14n, index, 18, False{}, 0n, t, h, [w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read16_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read16(index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(15n, index, 17, False{}, 0n, t, h, [w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read15_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read15(index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(16n, index, 16, False{}, 0n, t, h, [w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read14_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read14(index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(17n, index, 15, False{}, 0n, t, h, [w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read13_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read13(index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(18n, index, 14, False{}, 0n, t, h, [w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read12_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read12(index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(19n, index, 13, False{}, 0n, t, h, [w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read11_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read11(index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(20n, index, 12, False{}, 0n, t, h, [w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read10_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read10(index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(21n, index, 11, False{}, 0n, t, h, [w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read9_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read9(index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(22n, index, 10, False{}, 0n, t, h, [w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read8_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read8(index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(23n, index, 9, False{}, 0n, t, h, [w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read7_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read7(index, t, h, w0, w1, w2, w3, w4, w5, w6, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(24n, index, 8, False{}, 0n, t, h, [w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read6_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read6(index, t, h, w0, w1, w2, w3, w4, w5, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(25n, index, 7, False{}, 0n, t, h, [w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read5_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read5(index, t, h, w0, w1, w2, w3, w4, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(26n, index, 6, False{}, 0n, t, h, [w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read4_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read4(index, t, h, w0, w1, w2, w3, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(27n, index, 5, False{}, 0n, t, h, [w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read3_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read3(index, t, h, w0, w1, w2, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(28n, index, 4, False{}, 0n, t, h, [w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read2_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read2(index, t, h, w0, w1, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(29n, index, 3, False{}, 0n, t, h, [w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read1_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read1(index, t, h, w0, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(30n, index, 2, False{}, 0n, t, h, [w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend read0_correct @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.read0(index, t, h, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(31n, index, 1, False{}, 0n, t, h, [], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend absorb_correct @a:Array -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.absorb(a, index, t, h) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.absorb(a, index, t, h) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend keep_correct @+w:U32 -> @+n:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.keep(w, n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.keep(w, n) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend masks_correct @+remain:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @+w30:U32 -> @+w31:U32 -> {[0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w0, 0n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w1, 4n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w2, 8n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w3, 12n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w4, 16n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w5, 20n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w6, 24n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w7, 28n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w8, 32n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w9, 36n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w10, 40n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w11, 44n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w12, 48n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w13, 52n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w14, 56n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w15, 60n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w16, 64n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w17, 68n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w18, 72n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w19, 76n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w20, 80n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w21, 84n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w22, 88n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w23, 92n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w24, 96n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w25, 100n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w26, 104n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w27, 108n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w28, 112n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w29, 116n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w30, 120n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.mask(w31, 124n, remain)] == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.trim([w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, w31], 0n, remain) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last31_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @+w30:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last31(remain, index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(0n, index, 32, True{}, remain, t, h, [w30, w29, w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last30_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last30(remain, index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(1n, index, 31, True{}, remain, t, h, [w29, w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last29_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last29(remain, index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(2n, index, 30, True{}, remain, t, h, [w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last28_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last28(remain, index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(3n, index, 29, True{}, remain, t, h, [w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last27_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last27(remain, index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(4n, index, 28, True{}, remain, t, h, [w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last26_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last26(remain, index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(5n, index, 27, True{}, remain, t, h, [w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last25_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last25(remain, index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(6n, index, 26, True{}, remain, t, h, [w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last24_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last24(remain, index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(7n, index, 25, True{}, remain, t, h, [w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last23_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last23(remain, index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(8n, index, 24, True{}, remain, t, h, [w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last22_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last22(remain, index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(9n, index, 23, True{}, remain, t, h, [w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last21_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last21(remain, index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(10n, index, 22, True{}, remain, t, h, [w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last20_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last20(remain, index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(11n, index, 21, True{}, remain, t, h, [w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last19_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last19(remain, index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(12n, index, 20, True{}, remain, t, h, [w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last18_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last18(remain, index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(13n, index, 19, True{}, remain, t, h, [w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last17_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last17(remain, index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(14n, index, 18, True{}, remain, t, h, [w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last16_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last16(remain, index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(15n, index, 17, True{}, remain, t, h, [w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last15_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last15(remain, index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(16n, index, 16, True{}, remain, t, h, [w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last14_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last14(remain, index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(17n, index, 15, True{}, remain, t, h, [w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last13_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last13(remain, index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(18n, index, 14, True{}, remain, t, h, [w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last12_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last12(remain, index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(19n, index, 13, True{}, remain, t, h, [w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last11_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last11(remain, index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(20n, index, 12, True{}, remain, t, h, [w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last10_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last10(remain, index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(21n, index, 11, True{}, remain, t, h, [w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last9_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last9(remain, index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, w8, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(22n, index, 10, True{}, remain, t, h, [w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last8_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last8(remain, index, t, h, w0, w1, w2, w3, w4, w5, w6, w7, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(23n, index, 9, True{}, remain, t, h, [w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last7_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last7(remain, index, t, h, w0, w1, w2, w3, w4, w5, w6, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(24n, index, 8, True{}, remain, t, h, [w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last6_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last6(remain, index, t, h, w0, w1, w2, w3, w4, w5, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(25n, index, 7, True{}, remain, t, h, [w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last5_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last5(remain, index, t, h, w0, w1, w2, w3, w4, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(26n, index, 6, True{}, remain, t, h, [w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last4_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last4(remain, index, t, h, w0, w1, w2, w3, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(27n, index, 5, True{}, remain, t, h, [w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last3_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last3(remain, index, t, h, w0, w1, w2, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(28n, index, 4, True{}, remain, t, h, [w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last2_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @+w1:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last2(remain, index, t, h, w0, w1, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(29n, index, 3, True{}, remain, t, h, [w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last1_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+w0:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last1(remain, index, t, h, w0, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(30n, index, 2, True{}, remain, t, h, [w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend last0_correct @+remain:Nat -> @+index:U32 -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.last0(remain, index, t, h, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.gather(31n, index, 1, True{}, remain, t, h, [], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend final_correct @a:Array -> @+index:U32 -> @+remain:Nat -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.final(a, index, remain, t, h) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.final(a, index, remain, t, h) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend blocks_step @+n:Nat -> @+index:U32 -> @+remain:Nat -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @-a:Array -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @view:Sigma<&2, &1, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/blake/blake2b/array.Tree, z => {a == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/blake/blake2b/array.thaw(z) : Array}> -> @recurse:(@pair:Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.blocks(n, U32.add(index, 32), remain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.advance(t, 128), pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.blocks(n, U32.add(index, 32), remain, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.advance(t, 128), pair) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain}) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.blocks(1n+n, index, remain, t, (a, h)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.blocks(1n+n, index, remain, t, (a, h)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend blocks_correct @+n:Nat -> @+index:U32 -> @+remain:Nat -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @pair:Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.blocks(n, index, remain, t, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.blocks(n, index, remain, t, pair) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend unchecked_correct @a:Array -> @+length:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.unchecked(a, length) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.unchecked(a, length) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend digest_correct @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.digest(h) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.digest(h) : Array} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend checked_true_reified @-a:Array -> @+length:Nat -> @view:Sigma<&2, &1, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/blake/blake2b/array.Tree, z => {a == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/blake/blake2b/array.thaw(z) : Array}> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.checked(True{}, a, length) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.checked(True{}, a, length) : Maybe<&1, Array>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend checked_correct @+valid:Bool -> @a:Array -> @+length:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.checked(valid, a, length) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.checked(valid, a, length) : Maybe<&1, Array>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend sized_correct @+length:Nat -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.sized(length, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.sized(length, pair) : Maybe<&1, Array>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/blocks.bend blake2b_correct @words:Array -> @+byte_length:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/blake2b.blake2b(words, byte_length) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.blake2b(words, byte_length) : Maybe<&1, Array>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend column0_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+x0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.column0(v, x0, x1, x2, x3, x4, x5, x6, x7) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(v, 0n, 4n, 8n, 12n, x0, x1), 1n, 5n, 9n, 13n, x2, x3), 2n, 6n, 10n, 14n, x4, x5), 3n, 7n, 11n, 15n, x6, x7) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend diagonal0_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+x0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.diagonal0(v, x0, x1, x2, x3, x4, x5, x6, x7) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(v, 0n, 5n, 10n, 15n, x0, x1), 1n, 6n, 11n, 12n, x2, x3), 2n, 7n, 8n, 13n, x4, x5), 3n, 4n, 9n, 14n, x6, x7) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend round0_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+m0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m8:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m9:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m10:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m11:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m12:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m13:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m14:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m15:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.round0(v, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.round(v, [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15], 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.sigma(0n)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend column1_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+x0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.column1(v, x0, x1, x2, x3, x4, x5, x6, x7) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(v, 0n, 4n, 8n, 12n, x0, x1), 1n, 5n, 9n, 13n, x2, x3), 2n, 6n, 10n, 14n, x4, x5), 3n, 7n, 11n, 15n, x6, x7) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend diagonal1_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+x0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.diagonal1(v, x0, x1, x2, x3, x4, x5, x6, x7) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(v, 0n, 5n, 10n, 15n, x0, x1), 1n, 6n, 11n, 12n, x2, x3), 2n, 7n, 8n, 13n, x4, x5), 3n, 4n, 9n, 14n, x6, x7) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend round1_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+m0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m8:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m9:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m10:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m11:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m12:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m13:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m14:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m15:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.round1(v, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.round(v, [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15], 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.sigma(1n)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend column2_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+x0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.column2(v, x0, x1, x2, x3, x4, x5, x6, x7) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(v, 0n, 4n, 8n, 12n, x0, x1), 1n, 5n, 9n, 13n, x2, x3), 2n, 6n, 10n, 14n, x4, x5), 3n, 7n, 11n, 15n, x6, x7) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend diagonal2_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+x0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.diagonal2(v, x0, x1, x2, x3, x4, x5, x6, x7) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(v, 0n, 5n, 10n, 15n, x0, x1), 1n, 6n, 11n, 12n, x2, x3), 2n, 7n, 8n, 13n, x4, x5), 3n, 4n, 9n, 14n, x6, x7) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend round2_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+m0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m8:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m9:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m10:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m11:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m12:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m13:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m14:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m15:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.round2(v, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.round(v, [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15], 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.sigma(2n)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend column3_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+x0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.column3(v, x0, x1, x2, x3, x4, x5, x6, x7) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(v, 0n, 4n, 8n, 12n, x0, x1), 1n, 5n, 9n, 13n, x2, x3), 2n, 6n, 10n, 14n, x4, x5), 3n, 7n, 11n, 15n, x6, x7) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend diagonal3_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+x0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.diagonal3(v, x0, x1, x2, x3, x4, x5, x6, x7) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(v, 0n, 5n, 10n, 15n, x0, x1), 1n, 6n, 11n, 12n, x2, x3), 2n, 7n, 8n, 13n, x4, x5), 3n, 4n, 9n, 14n, x6, x7) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend round3_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+m0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m8:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m9:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m10:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m11:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m12:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m13:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m14:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m15:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.round3(v, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.round(v, [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15], 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.sigma(3n)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend column4_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+x0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.column4(v, x0, x1, x2, x3, x4, x5, x6, x7) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(v, 0n, 4n, 8n, 12n, x0, x1), 1n, 5n, 9n, 13n, x2, x3), 2n, 6n, 10n, 14n, x4, x5), 3n, 7n, 11n, 15n, x6, x7) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend diagonal4_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+x0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.diagonal4(v, x0, x1, x2, x3, x4, x5, x6, x7) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(v, 0n, 5n, 10n, 15n, x0, x1), 1n, 6n, 11n, 12n, x2, x3), 2n, 7n, 8n, 13n, x4, x5), 3n, 4n, 9n, 14n, x6, x7) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend round4_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+m0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m8:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m9:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m10:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m11:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m12:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m13:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m14:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m15:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.round4(v, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.round(v, [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15], 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.sigma(4n)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend column5_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+x0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.column5(v, x0, x1, x2, x3, x4, x5, x6, x7) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(v, 0n, 4n, 8n, 12n, x0, x1), 1n, 5n, 9n, 13n, x2, x3), 2n, 6n, 10n, 14n, x4, x5), 3n, 7n, 11n, 15n, x6, x7) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend diagonal5_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+x0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.diagonal5(v, x0, x1, x2, x3, x4, x5, x6, x7) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(v, 0n, 5n, 10n, 15n, x0, x1), 1n, 6n, 11n, 12n, x2, x3), 2n, 7n, 8n, 13n, x4, x5), 3n, 4n, 9n, 14n, x6, x7) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend round5_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+m0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m8:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m9:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m10:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m11:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m12:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m13:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m14:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m15:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.round5(v, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.round(v, [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15], 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.sigma(5n)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend column6_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+x0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.column6(v, x0, x1, x2, x3, x4, x5, x6, x7) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(v, 0n, 4n, 8n, 12n, x0, x1), 1n, 5n, 9n, 13n, x2, x3), 2n, 6n, 10n, 14n, x4, x5), 3n, 7n, 11n, 15n, x6, x7) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend diagonal6_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+x0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.diagonal6(v, x0, x1, x2, x3, x4, x5, x6, x7) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(v, 0n, 5n, 10n, 15n, x0, x1), 1n, 6n, 11n, 12n, x2, x3), 2n, 7n, 8n, 13n, x4, x5), 3n, 4n, 9n, 14n, x6, x7) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend round6_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+m0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m8:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m9:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m10:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m11:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m12:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m13:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m14:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m15:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.round6(v, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.round(v, [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15], 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.sigma(6n)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend column7_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+x0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.column7(v, x0, x1, x2, x3, x4, x5, x6, x7) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(v, 0n, 4n, 8n, 12n, x0, x1), 1n, 5n, 9n, 13n, x2, x3), 2n, 6n, 10n, 14n, x4, x5), 3n, 7n, 11n, 15n, x6, x7) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend diagonal7_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+x0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.diagonal7(v, x0, x1, x2, x3, x4, x5, x6, x7) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(v, 0n, 5n, 10n, 15n, x0, x1), 1n, 6n, 11n, 12n, x2, x3), 2n, 7n, 8n, 13n, x4, x5), 3n, 4n, 9n, 14n, x6, x7) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend round7_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+m0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m8:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m9:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m10:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m11:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m12:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m13:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m14:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m15:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.round7(v, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.round(v, [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15], 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.sigma(7n)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend column8_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+x0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.column8(v, x0, x1, x2, x3, x4, x5, x6, x7) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(v, 0n, 4n, 8n, 12n, x0, x1), 1n, 5n, 9n, 13n, x2, x3), 2n, 6n, 10n, 14n, x4, x5), 3n, 7n, 11n, 15n, x6, x7) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend diagonal8_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+x0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.diagonal8(v, x0, x1, x2, x3, x4, x5, x6, x7) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(v, 0n, 5n, 10n, 15n, x0, x1), 1n, 6n, 11n, 12n, x2, x3), 2n, 7n, 8n, 13n, x4, x5), 3n, 4n, 9n, 14n, x6, x7) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend round8_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+m0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m8:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m9:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m10:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m11:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m12:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m13:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m14:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m15:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.round8(v, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.round(v, [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15], 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.sigma(8n)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend column9_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+x0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.column9(v, x0, x1, x2, x3, x4, x5, x6, x7) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(v, 0n, 4n, 8n, 12n, x0, x1), 1n, 5n, 9n, 13n, x2, x3), 2n, 6n, 10n, 14n, x4, x5), 3n, 7n, 11n, 15n, x6, x7) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend diagonal9_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+x0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.diagonal9(v, x0, x1, x2, x3, x4, x5, x6, x7) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(v, 0n, 5n, 10n, 15n, x0, x1), 1n, 6n, 11n, 12n, x2, x3), 2n, 7n, 8n, 13n, x4, x5), 3n, 4n, 9n, 14n, x6, x7) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend round9_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+m0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m8:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m9:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m10:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m11:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m12:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m13:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m14:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m15:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.round9(v, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.round(v, [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15], 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.sigma(9n)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend column10_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+x0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.column10(v, x0, x1, x2, x3, x4, x5, x6, x7) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(v, 0n, 4n, 8n, 12n, x0, x1), 1n, 5n, 9n, 13n, x2, x3), 2n, 6n, 10n, 14n, x4, x5), 3n, 7n, 11n, 15n, x6, x7) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend diagonal10_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+x0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.diagonal10(v, x0, x1, x2, x3, x4, x5, x6, x7) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(v, 0n, 5n, 10n, 15n, x0, x1), 1n, 6n, 11n, 12n, x2, x3), 2n, 7n, 8n, 13n, x4, x5), 3n, 4n, 9n, 14n, x6, x7) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend round10_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+m0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m8:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m9:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m10:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m11:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m12:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m13:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m14:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m15:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.round10(v, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.round(v, [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15], 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.sigma(0n)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend column11_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+x0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.column11(v, x0, x1, x2, x3, x4, x5, x6, x7) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(v, 0n, 4n, 8n, 12n, x0, x1), 1n, 5n, 9n, 13n, x2, x3), 2n, 6n, 10n, 14n, x4, x5), 3n, 7n, 11n, 15n, x6, x7) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend diagonal11_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+x0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+x7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.diagonal11(v, x0, x1, x2, x3, x4, x5, x6, x7) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.G(v, 0n, 5n, 10n, 15n, x0, x1), 1n, 6n, 11n, 12n, x2, x3), 2n, 7n, 8n, 13n, x4, x5), 3n, 4n, 9n, 14n, x6, x7) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend round11_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+m0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m8:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m9:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m10:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m11:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m12:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m13:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m14:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m15:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.round11(v, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.round(v, [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15], 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.sigma(1n)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend rounds_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> @+m0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m8:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m9:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m10:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m11:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m12:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m13:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m14:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> @+m15:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.rounds(v, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.rounds(12n, 0n, v, [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15]) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend start_correct @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.start(h, t) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.start(h, t, False{}) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend start_last_correct @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.start_last(h, t) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.start(h, t, True{}) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend finish_correct @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.finish(h, v) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.finish(h, v) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend compress_correct @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @+w30:U32 -> @+w31:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.compress(h, t, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, w31) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.compress(h, [0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w0, w1}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w2, w3}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w4, w5}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w6, w7}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w8, w9}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w10, w11}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w12, w13}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w14, w15}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w16, w17}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w18, w19}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w20, w21}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w22, w23}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w24, w25}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w26, w27}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w28, w29}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w30, w31}], t, False{}) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend compress_last_correct @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain -> @+t:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @+w30:U32 -> @+w31:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.compress_last(h, t, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, w31) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.compress(h, [0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w0, w1}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w2, w3}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w4, w5}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w6, w7}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w8, w9}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w10, w11}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w12, w13}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w14, w15}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w16, w17}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w18, w19}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w20, w21}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w22, w23}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w24, w25}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w26, w27}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w28, w29}, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.W{w30, w31}], t, True{}) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Chain} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2b/compress.bend bump_correct @+c:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter -> @+x:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/compress.bump(c, x) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2b.advance(c, x) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2b/types.Counter} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/array.bend reify @a:Array -> Sigma<&2, &1, Tree, t => {a == thaw(t) : Array}> bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/array.bend reify_node @-l:Array -> @-r:Array -> @left:Sigma<&2, &1, Tree, t => {l == thaw(t) : Array}> -> @right:Sigma<&2, &1, Tree, t => {r == thaw(t) : Array}> -> Sigma<&2, &1, Tree, t => {ANode{l, r} == thaw(t) : Array}> bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/bytes.bend bits32 @-y0:Bool -> @-y1:Bool -> @-y2:Bool -> @-y3:Bool -> @-y4:Bool -> @-y5:Bool -> @-y6:Bool -> @-y7:Bool -> @-y8:Bool -> @-y9:Bool -> @-y10:Bool -> @-y11:Bool -> @-y12:Bool -> @-y13:Bool -> @-y14:Bool -> @-y15:Bool -> @-y16:Bool -> @-y17:Bool -> @-y18:Bool -> @-y19:Bool -> @-y20:Bool -> @-y21:Bool -> @-y22:Bool -> @-y23:Bool -> @-y24:Bool -> @-y25:Bool -> @-y26:Bool -> @-y27:Bool -> @-y28:Bool -> @-y29:Bool -> @-y30:Bool -> @-y31:Bool -> @-z0:Bool -> @-z1:Bool -> @-z2:Bool -> @-z3:Bool -> @-z4:Bool -> @-z5:Bool -> @-z6:Bool -> @-z7:Bool -> @-z8:Bool -> @-z9:Bool -> @-z10:Bool -> @-z11:Bool -> @-z12:Bool -> @-z13:Bool -> @-z14:Bool -> @-z15:Bool -> @-z16:Bool -> @-z17:Bool -> @-z18:Bool -> @-z19:Bool -> @-z20:Bool -> @-z21:Bool -> @-z22:Bool -> @-z23:Bool -> @-z24:Bool -> @-z25:Bool -> @-z26:Bool -> @-z27:Bool -> @-z28:Bool -> @-z29:Bool -> @-z30:Bool -> @-z31:Bool -> @e0:{y0 == z0 : Bool} -> @e1:{y1 == z1 : Bool} -> @e2:{y2 == z2 : Bool} -> @e3:{y3 == z3 : Bool} -> @e4:{y4 == z4 : Bool} -> @e5:{y5 == z5 : Bool} -> @e6:{y6 == z6 : Bool} -> @e7:{y7 == z7 : Bool} -> @e8:{y8 == z8 : Bool} -> @e9:{y9 == z9 : Bool} -> @e10:{y10 == z10 : Bool} -> @e11:{y11 == z11 : Bool} -> @e12:{y12 == z12 : Bool} -> @e13:{y13 == z13 : Bool} -> @e14:{y14 == z14 : Bool} -> @e15:{y15 == z15 : Bool} -> @e16:{y16 == z16 : Bool} -> @e17:{y17 == z17 : Bool} -> @e18:{y18 == z18 : Bool} -> @e19:{y19 == z19 : Bool} -> @e20:{y20 == z20 : Bool} -> @e21:{y21 == z21 : Bool} -> @e22:{y22 == z22 : Bool} -> @e23:{y23 == z23 : Bool} -> @e24:{y24 == z24 : Bool} -> @e25:{y25 == z25 : Bool} -> @e26:{y26 == z26 : Bool} -> @e27:{y27 == z27 : Bool} -> @e28:{y28 == z28 : Bool} -> @e29:{y29 == z29 : Bool} -> @e30:{y30 == z30 : Bool} -> @e31:{y31 == z31 : Bool} -> {U32{WCon{y0, WCon{y1, WCon{y2, WCon{y3, WCon{y4, WCon{y5, WCon{y6, WCon{y7, WCon{y8, WCon{y9, WCon{y10, WCon{y11, WCon{y12, WCon{y13, WCon{y14, WCon{y15, WCon{y16, WCon{y17, WCon{y18, WCon{y19, WCon{y20, WCon{y21, WCon{y22, WCon{y23, WCon{y24, WCon{y25, WCon{y26, WCon{y27, WCon{y28, WCon{y29, WCon{y30, WCon{y31, WNil{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} == U32{WCon{z0, WCon{z1, WCon{z2, WCon{z3, WCon{z4, WCon{z5, WCon{z6, WCon{z7, WCon{z8, WCon{z9, WCon{z10, WCon{z11, WCon{z12, WCon{z13, WCon{z14, WCon{z15, WCon{z16, WCon{z17, WCon{z18, WCon{z19, WCon{z20, WCon{z21, WCon{z22, WCon{z23, WCon{z24, WCon{z25, WCon{z26, WCon{z27, WCon{z28, WCon{z29, WCon{z30, WCon{z31, WNil{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/bytes.bend or1 @+x:Bool -> {Bool.or(x, False{}) == x : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/bytes.bend or2 @+x:Bool -> {Bool.or(Bool.or(x, False{}), False{}) == x : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/bytes.bend or3 @+x:Bool -> {Bool.or(Bool.or(Bool.or(x, False{}), False{}), False{}) == x : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/bytes.bend full @+w:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.word(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.byte(w, 0n), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.byte(w, 1n), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.byte(w, 2n), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.byte(w, 3n)) == w : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/bytes.bend part3 @+w:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.word(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.byte(w, 0n), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.byte(w, 1n), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.byte(w, 2n), 0) == U32.and(16777215, w) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/bytes.bend part2 @+w:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.word(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.byte(w, 0n), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.byte(w, 1n), 0, 0) == U32.and(65535, w) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/bytes.bend part1 @+w:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.word(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.byte(w, 0n), 0, 0, 0) == U32.and(255, w) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/bytes.bend pad_word_correct @+w:U32 -> @+i:Nat -> @+len:Nat -> {kept(w, i, len) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad_word(w, i, len) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/bytes.bend words_serialize @+ws:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.words(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.serialize(ws)) == ws : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/bytes.bend words_pad @+ws:List<&2, U32> -> @+i:Nat -> @+len:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.words(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.pad(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.serialize(ws), i, len)) == masked(ws, i, len) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/compress.bend round0_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.Vector -> @+m0:U32 -> @+m1:U32 -> @+m2:U32 -> @+m3:U32 -> @+m4:U32 -> @+m5:U32 -> @+m6:U32 -> @+m7:U32 -> @+m8:U32 -> @+m9:U32 -> @+m10:U32 -> @+m11:U32 -> @+m12:U32 -> @+m13:U32 -> @+m14:U32 -> @+m15:U32 -> {vec(round_at(0n, v, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.round(vec(v), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.sigma(0n), [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15]) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/compress.bend round1_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.Vector -> @+m0:U32 -> @+m1:U32 -> @+m2:U32 -> @+m3:U32 -> @+m4:U32 -> @+m5:U32 -> @+m6:U32 -> @+m7:U32 -> @+m8:U32 -> @+m9:U32 -> @+m10:U32 -> @+m11:U32 -> @+m12:U32 -> @+m13:U32 -> @+m14:U32 -> @+m15:U32 -> {vec(round_at(1n, v, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.round(vec(v), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.sigma(1n), [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15]) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/compress.bend round2_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.Vector -> @+m0:U32 -> @+m1:U32 -> @+m2:U32 -> @+m3:U32 -> @+m4:U32 -> @+m5:U32 -> @+m6:U32 -> @+m7:U32 -> @+m8:U32 -> @+m9:U32 -> @+m10:U32 -> @+m11:U32 -> @+m12:U32 -> @+m13:U32 -> @+m14:U32 -> @+m15:U32 -> {vec(round_at(2n, v, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.round(vec(v), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.sigma(2n), [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15]) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/compress.bend round3_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.Vector -> @+m0:U32 -> @+m1:U32 -> @+m2:U32 -> @+m3:U32 -> @+m4:U32 -> @+m5:U32 -> @+m6:U32 -> @+m7:U32 -> @+m8:U32 -> @+m9:U32 -> @+m10:U32 -> @+m11:U32 -> @+m12:U32 -> @+m13:U32 -> @+m14:U32 -> @+m15:U32 -> {vec(round_at(3n, v, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.round(vec(v), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.sigma(3n), [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15]) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/compress.bend round4_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.Vector -> @+m0:U32 -> @+m1:U32 -> @+m2:U32 -> @+m3:U32 -> @+m4:U32 -> @+m5:U32 -> @+m6:U32 -> @+m7:U32 -> @+m8:U32 -> @+m9:U32 -> @+m10:U32 -> @+m11:U32 -> @+m12:U32 -> @+m13:U32 -> @+m14:U32 -> @+m15:U32 -> {vec(round_at(4n, v, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.round(vec(v), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.sigma(4n), [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15]) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/compress.bend round5_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.Vector -> @+m0:U32 -> @+m1:U32 -> @+m2:U32 -> @+m3:U32 -> @+m4:U32 -> @+m5:U32 -> @+m6:U32 -> @+m7:U32 -> @+m8:U32 -> @+m9:U32 -> @+m10:U32 -> @+m11:U32 -> @+m12:U32 -> @+m13:U32 -> @+m14:U32 -> @+m15:U32 -> {vec(round_at(5n, v, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.round(vec(v), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.sigma(5n), [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15]) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/compress.bend round6_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.Vector -> @+m0:U32 -> @+m1:U32 -> @+m2:U32 -> @+m3:U32 -> @+m4:U32 -> @+m5:U32 -> @+m6:U32 -> @+m7:U32 -> @+m8:U32 -> @+m9:U32 -> @+m10:U32 -> @+m11:U32 -> @+m12:U32 -> @+m13:U32 -> @+m14:U32 -> @+m15:U32 -> {vec(round_at(6n, v, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.round(vec(v), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.sigma(6n), [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15]) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/compress.bend round7_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.Vector -> @+m0:U32 -> @+m1:U32 -> @+m2:U32 -> @+m3:U32 -> @+m4:U32 -> @+m5:U32 -> @+m6:U32 -> @+m7:U32 -> @+m8:U32 -> @+m9:U32 -> @+m10:U32 -> @+m11:U32 -> @+m12:U32 -> @+m13:U32 -> @+m14:U32 -> @+m15:U32 -> {vec(round_at(7n, v, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.round(vec(v), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.sigma(7n), [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15]) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/compress.bend round8_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.Vector -> @+m0:U32 -> @+m1:U32 -> @+m2:U32 -> @+m3:U32 -> @+m4:U32 -> @+m5:U32 -> @+m6:U32 -> @+m7:U32 -> @+m8:U32 -> @+m9:U32 -> @+m10:U32 -> @+m11:U32 -> @+m12:U32 -> @+m13:U32 -> @+m14:U32 -> @+m15:U32 -> {vec(round_at(8n, v, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.round(vec(v), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.sigma(8n), [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15]) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/compress.bend round9_correct @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.Vector -> @+m0:U32 -> @+m1:U32 -> @+m2:U32 -> @+m3:U32 -> @+m4:U32 -> @+m5:U32 -> @+m6:U32 -> @+m7:U32 -> @+m8:U32 -> @+m9:U32 -> @+m10:U32 -> @+m11:U32 -> @+m12:U32 -> @+m13:U32 -> @+m14:U32 -> @+m15:U32 -> {vec(round_at(9n, v, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.round(vec(v), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.sigma(9n), [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15]) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/compress.bend round_correct @+i:Nat -> @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.Vector -> @+m0:U32 -> @+m1:U32 -> @+m2:U32 -> @+m3:U32 -> @+m4:U32 -> @+m5:U32 -> @+m6:U32 -> @+m7:U32 -> @+m8:U32 -> @+m9:U32 -> @+m10:U32 -> @+m11:U32 -> @+m12:U32 -> @+m13:U32 -> @+m14:U32 -> @+m15:U32 -> {vec(round_at(i, v, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.round(vec(v), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.sigma(i), [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15]) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/compress.bend rounds_correct @+n:Nat -> @+i:Nat -> @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.Vector -> @+m0:U32 -> @+m1:U32 -> @+m2:U32 -> @+m3:U32 -> @+m4:U32 -> @+m5:U32 -> @+m6:U32 -> @+m7:U32 -> @+m8:U32 -> @+m9:U32 -> @+m10:U32 -> @+m11:U32 -> @+m12:U32 -> @+m13:U32 -> @+m14:U32 -> @+m15:U32 -> {vec(rounds(n, i, v, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.rounds(n, i, vec(v), [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15]) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/compress.bend finish_correct @+h0:U32 -> @+h1:U32 -> @+h2:U32 -> @+h3:U32 -> @+h4:U32 -> @+h5:U32 -> @+h6:U32 -> @+h7:U32 -> @+v:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.Vector -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/compress.finish(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.H{h0, h1, h2, h3, h4, h5, h6, h7}, v) == fin(h0, h1, h2, h3, h4, h5, h6, h7, vec(v)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/compress.bend init_correct @+h0:U32 -> @+h1:U32 -> @+h2:U32 -> @+h3:U32 -> @+h4:U32 -> @+h5:U32 -> @+h6:U32 -> @+h7:U32 -> @+t0:U32 -> @+t1:U32 -> @+last:Bool -> {vec(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/compress.init(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.H{h0, h1, h2, h3, h4, h5, h6, h7}, t0, t1, last)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.invert(last, [h0, h1, h2, h3, h4, h5, h6, h7, 1779033703, 3144134277, 1013904242, 2773480762, U32.xor(1359893119, t0), U32.xor(2600822924, t1), 528734635, 1541459225]) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/compress.bend model_correct @+r:Nat -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+m0:U32 -> @+m1:U32 -> @+m2:U32 -> @+m3:U32 -> @+m4:U32 -> @+m5:U32 -> @+m6:U32 -> @+m7:U32 -> @+m8:U32 -> @+m9:U32 -> @+m10:U32 -> @+m11:U32 -> @+m12:U32 -> @+m13:U32 -> @+m14:U32 -> @+m15:U32 -> @+t0:U32 -> @+t1:U32 -> @+last:Bool -> {model(r, h, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, t0, t1, last) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.compress(r, h, [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15], t0, t1, last) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/compress.bend compress_correct @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+m0:U32 -> @+m1:U32 -> @+m2:U32 -> @+m3:U32 -> @+m4:U32 -> @+m5:U32 -> @+m6:U32 -> @+m7:U32 -> @+m8:U32 -> @+m9:U32 -> @+m10:U32 -> @+m11:U32 -> @+m12:U32 -> @+m13:U32 -> @+m14:U32 -> @+m15:U32 -> @+t0:U32 -> @+t1:U32 -> @+last:Bool -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/compress.compress(h, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15, t0, t1, last) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.compress(10n, h, [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15], t0, t1, last) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend carry_correct @+c:Bool -> @+hi:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.carry(c, hi) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.carry(c, hi) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend count_correct @+lo:U32 -> @+hi:U32 -> @+n:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.count_hi(lo, hi, n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.count_hi(lo, hi, n) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend block_correct @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/compress.compress(h, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, t0, t1, False{}) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.compress(10n, h, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.words(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.serialize([w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15])), t0, u1, False{}) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend last_correct @+remain:Nat -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/compress.compress(h, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad_word(w0, 0n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad_word(w1, 4n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad_word(w2, 8n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad_word(w3, 12n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad_word(w4, 16n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad_word(w5, 20n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad_word(w6, 24n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad_word(w7, 28n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad_word(w8, 32n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad_word(w9, 36n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad_word(w10, 40n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad_word(w11, 44n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad_word(w12, 48n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad_word(w13, 52n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad_word(w14, 56n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad_word(w15, 60n, remain), t0, t1, True{}) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.compress(10n, h, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.words(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.pad(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.serialize([w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15]), 0n, remain)), t0, u1, True{}) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend read15_correct @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.read15(index, h, t0, t1, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.full_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(0n, index, 16, [w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair), h, t0, u1) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend read14_correct @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.read14(index, h, t0, t1, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.full_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(1n, index, 15, [w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair), h, t0, u1) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend read13_correct @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.read13(index, h, t0, t1, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.full_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(2n, index, 14, [w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair), h, t0, u1) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend read12_correct @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.read12(index, h, t0, t1, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.full_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(3n, index, 13, [w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair), h, t0, u1) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend read11_correct @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.read11(index, h, t0, t1, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.full_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(4n, index, 12, [w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair), h, t0, u1) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend read10_correct @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.read10(index, h, t0, t1, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.full_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(5n, index, 11, [w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair), h, t0, u1) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend read9_correct @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.read9(index, h, t0, t1, w0, w1, w2, w3, w4, w5, w6, w7, w8, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.full_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(6n, index, 10, [w8, w7, w6, w5, w4, w3, w2, w1, w0], pair), h, t0, u1) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend read8_correct @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.read8(index, h, t0, t1, w0, w1, w2, w3, w4, w5, w6, w7, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.full_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(7n, index, 9, [w7, w6, w5, w4, w3, w2, w1, w0], pair), h, t0, u1) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend read7_correct @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.read7(index, h, t0, t1, w0, w1, w2, w3, w4, w5, w6, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.full_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(8n, index, 8, [w6, w5, w4, w3, w2, w1, w0], pair), h, t0, u1) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend read6_correct @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.read6(index, h, t0, t1, w0, w1, w2, w3, w4, w5, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.full_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(9n, index, 7, [w5, w4, w3, w2, w1, w0], pair), h, t0, u1) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend read5_correct @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.read5(index, h, t0, t1, w0, w1, w2, w3, w4, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.full_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(10n, index, 6, [w4, w3, w2, w1, w0], pair), h, t0, u1) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend read4_correct @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.read4(index, h, t0, t1, w0, w1, w2, w3, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.full_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(11n, index, 5, [w3, w2, w1, w0], pair), h, t0, u1) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend read3_correct @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.read3(index, h, t0, t1, w0, w1, w2, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.full_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(12n, index, 4, [w2, w1, w0], pair), h, t0, u1) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend read2_correct @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.read2(index, h, t0, t1, w0, w1, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.full_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(13n, index, 3, [w1, w0], pair), h, t0, u1) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend read1_correct @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.read1(index, h, t0, t1, w0, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.full_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(14n, index, 2, [w0], pair), h, t0, u1) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend read0_correct @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.read0(index, h, t0, t1, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.full_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(15n, index, 1, [], pair), h, t0, u1) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend pad15_correct @+remain:Nat -> @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad15(remain, index, h, t0, t1, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.last_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(0n, index, 16, [w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair), remain, h, t0, u1) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend pad14_correct @+remain:Nat -> @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad14(remain, index, h, t0, t1, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.last_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(1n, index, 15, [w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair), remain, h, t0, u1) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend pad13_correct @+remain:Nat -> @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad13(remain, index, h, t0, t1, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.last_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(2n, index, 14, [w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair), remain, h, t0, u1) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend pad12_correct @+remain:Nat -> @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad12(remain, index, h, t0, t1, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.last_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(3n, index, 13, [w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair), remain, h, t0, u1) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend pad11_correct @+remain:Nat -> @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad11(remain, index, h, t0, t1, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.last_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(4n, index, 12, [w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair), remain, h, t0, u1) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend pad10_correct @+remain:Nat -> @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad10(remain, index, h, t0, t1, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.last_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(5n, index, 11, [w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair), remain, h, t0, u1) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend pad9_correct @+remain:Nat -> @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad9(remain, index, h, t0, t1, w0, w1, w2, w3, w4, w5, w6, w7, w8, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.last_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(6n, index, 10, [w8, w7, w6, w5, w4, w3, w2, w1, w0], pair), remain, h, t0, u1) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend pad8_correct @+remain:Nat -> @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad8(remain, index, h, t0, t1, w0, w1, w2, w3, w4, w5, w6, w7, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.last_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(7n, index, 9, [w7, w6, w5, w4, w3, w2, w1, w0], pair), remain, h, t0, u1) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend pad7_correct @+remain:Nat -> @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad7(remain, index, h, t0, t1, w0, w1, w2, w3, w4, w5, w6, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.last_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(8n, index, 8, [w6, w5, w4, w3, w2, w1, w0], pair), remain, h, t0, u1) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend pad6_correct @+remain:Nat -> @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad6(remain, index, h, t0, t1, w0, w1, w2, w3, w4, w5, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.last_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(9n, index, 7, [w5, w4, w3, w2, w1, w0], pair), remain, h, t0, u1) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend pad5_correct @+remain:Nat -> @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad5(remain, index, h, t0, t1, w0, w1, w2, w3, w4, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.last_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(10n, index, 6, [w4, w3, w2, w1, w0], pair), remain, h, t0, u1) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend pad4_correct @+remain:Nat -> @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad4(remain, index, h, t0, t1, w0, w1, w2, w3, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.last_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(11n, index, 5, [w3, w2, w1, w0], pair), remain, h, t0, u1) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend pad3_correct @+remain:Nat -> @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad3(remain, index, h, t0, t1, w0, w1, w2, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.last_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(12n, index, 4, [w2, w1, w0], pair), remain, h, t0, u1) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend pad2_correct @+remain:Nat -> @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @+w1:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad2(remain, index, h, t0, t1, w0, w1, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.last_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(13n, index, 3, [w1, w0], pair), remain, h, t0, u1) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend pad1_correct @+remain:Nat -> @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+w0:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad1(remain, index, h, t0, t1, w0, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.last_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(14n, index, 2, [w0], pair), remain, h, t0, u1) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend pad0_correct @+remain:Nat -> @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.pad0(remain, index, h, t0, t1, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.last_block(10n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.gather(15n, index, 1, [], pair), remain, h, t0, u1) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend absorb_correct @a:Array -> @+index:U32 -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.absorb(a, index, h, t0, t1) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.absorb(10n, a, index, h, t0, u1) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend finish_correct @a:Array -> @+index:U32 -> @+t0:U32 -> @+t1:U32 -> @+remain:Nat -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.finish(a, index, t0, t1, remain, h) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.finish(10n, a, index, t0, t1, remain, h) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend blocks_step @+n:Nat -> @+index:U32 -> @+t0:U32 -> @+t1:U32 -> @+remain:Nat -> @-a:Array -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> @view:Sigma<&2, &1, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/blake/blake2s/array.Tree, t => {a == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/blake/blake2s/array.thaw(t) : Array}> -> @recurse:(@pair:Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.blocks(n, U32.add(index, 16), U32.add(t0, 64), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.count_hi(t0, t1, 64), remain, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.blocks(10n, n, U32.add(index, 16), U32.add(t0, 64), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.count_hi(t0, t1, 64), remain, pair) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State}) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.blocks(1n+n, index, t0, t1, remain, (a, h)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.blocks(10n, 1n+n, index, t0, t1, remain, (a, h)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend blocks_correct @+n:Nat -> @+index:U32 -> @+t0:U32 -> @+t1:U32 -> @+u1:U32 -> @e:{t1 == u1 : U32} -> @+remain:Nat -> @pair:Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.blocks(n, index, t0, t1, remain, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.blocks(10n, n, index, t0, u1, remain, pair) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend leading_correct @+length:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.leading(length) == Nat.sub(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.block_count(length), 1n) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend hash_tail @-a:Array -> @+length:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.blocks(10n, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.leading(length), 0, 0, 0, Nat.sub(length, Nat.mul(64n, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.leading(length))), (a, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.initial)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.hash(10n, a, length) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend unchecked_correct @a:Array -> @+length:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.unchecked(a, length) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.hash(10n, a, length) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend digest_correct @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/types.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.digest(h) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.digest(h) : Array} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend checked_true @-a:Array -> @+length:Nat -> @view:Sigma<&2, &1, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/blake/blake2s/array.Tree, t => {a == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/blake/blake2s/array.thaw(t) : Array}> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.checked(True{}, a, length) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.checked(10n, True{}, a, length) : Maybe<&1, Array>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend checked_correct @+valid:Bool -> @a:Array -> @+length:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.checked(valid, a, length) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.checked(10n, valid, a, length) : Maybe<&1, Array>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend sized_correct @+length:Nat -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.sized(length, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.sized(10n, length, pair) : Maybe<&1, Array>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake2s/reads.bend blake2s_correct @a:Array -> @+length:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake2s/blake2s.blake2s(a, length) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake2s.blake2s(a, length) : Maybe<&1, Array>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/array.bend reify @a:Array -> Sigma<&2, &1, Tree, t => {a == thaw(t) : Array}> bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/array.bend reify_node @-l:Array -> @-r:Array -> @left:Sigma<&2, &1, Tree, t => {l == thaw(t) : Array}> -> @right:Sigma<&2, &1, Tree, t => {r == thaw(t) : Array}> -> Sigma<&2, &1, Tree, t => {ANode{l, r} == thaw(t) : Array}> bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/chunk.bend compress_full @+cv:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV -> @+b:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block -> @+t:U32 -> @+flags:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/compress.compress(cv, b, t, 64, flags) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.compress(cv, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.zero_tail(b, 64n), t, 64, flags) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/chunk.bend last_step @+p:Nat -> @+t:U32 -> @+index:U32 -> @+flags:U32 -> @+len:Nat -> @+cv:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV -> @-a:Array -> @+b:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block -> @view:Sigma<&2, &1, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/blake/blake3/array.Tree, x => {a == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/blake/blake3/array.thaw(x) : Array}> -> @recurse:(@c:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV -> @q:Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.last_go(p, t, U32.add(index, 16), 0, len, c, q) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.chunk_blocks(p, t, U32.add(index, 16), 0, len, c, q) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Out)}) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.last_go(1n+p, t, index, flags, len, cv, (a, b)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.chunk_blocks(1n+p, t, index, flags, len, cv, (a, b)) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Out)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/chunk.bend last_base @+t:U32 -> @+index:U32 -> @+flags:U32 -> @+len:Nat -> @+cv:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV -> @-a:Array -> @+b:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.last_go(0n, t, index, flags, len, cv, (a, b)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.chunk_blocks(0n, t, index, flags, len, cv, (a, b)) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Out)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/chunk.bend last_go_correct @+n:Nat -> @+t:U32 -> @+index:U32 -> @+flags:U32 -> @+len:Nat -> @+cv:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV -> @pair:Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.last_go(n, t, index, flags, len, cv, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.chunk_blocks(n, t, index, flags, len, cv, pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Out)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/chunk.bend full_step @+p:Nat -> @+t:U32 -> @+index:U32 -> @+flags:U32 -> @+cv:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV -> @-a:Array -> @+b:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block -> @view:Sigma<&2, &1, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/blake/blake3/array.Tree, x => {a == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/blake/blake3/array.thaw(x) : Array}> -> @recurse:(@c:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV -> @q:Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.full_go(p, t, U32.add(index, 16), 0, c, q) == outcv(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.chunk_blocks(p, t, U32.add(index, 16), 0, 64n, c, q)) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV)}) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.full_go(1n+p, t, index, flags, cv, (a, b)) == outcv(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.chunk_blocks(1n+p, t, index, flags, 64n, cv, (a, b))) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/chunk.bend full_base @+t:U32 -> @+index:U32 -> @+flags:U32 -> @+cv:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV -> @-a:Array -> @+b:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.full_go(0n, t, index, flags, cv, (a, b)) == outcv(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.chunk_blocks(0n, t, index, flags, 64n, cv, (a, b))) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/chunk.bend full_go_correct @+n:Nat -> @+t:U32 -> @+index:U32 -> @+flags:U32 -> @+cv:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV -> @pair:Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.full_go(n, t, index, flags, cv, pair) == outcv(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.chunk_blocks(n, t, index, flags, 64n, cv, pair)) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/chunk.bend full_chunk_view @-a:Array -> @+t:U32 -> @+index:U32 -> @view:Sigma<&2, &1, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/blake/blake3/array.Tree, x => {a == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/blake/blake3/array.thaw(x) : Array}> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.full_chunk(a, t, index) == outcv(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.chunk(a, t, index, 1024n)) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/chunk.bend full_chunk_correct @a:Array -> @+t:U32 -> @+index:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.full_chunk(a, t, index) == outcv(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.chunk(a, t, index, 1024n)) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/chunk.bend last_chunk_view @-a:Array -> @+t:U32 -> @+index:U32 -> @+len:Nat -> @view:Sigma<&2, &1, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/blake/blake3/array.Tree, x => {a == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/blake/blake3/array.thaw(x) : Array}> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.last_chunk(a, t, index, len) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.chunk(a, t, index, len) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Out)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/chunk.bend last_chunk_correct @a:Array -> @+t:U32 -> @+index:U32 -> @+len:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.last_chunk(a, t, index, len) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.chunk(a, t, index, len) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Out)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/compress.bend round_correct @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.St -> @+m0:U32 -> @+m1:U32 -> @+m2:U32 -> @+m3:U32 -> @+m4:U32 -> @+m5:U32 -> @+m6:U32 -> @+m7:U32 -> @+m8:U32 -> @+m9:U32 -> @+m10:U32 -> @+m11:U32 -> @+m12:U32 -> @+m13:U32 -> @+m14:U32 -> @+m15:U32 -> {st_list(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/compress.round(s, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.round(st_list(s), [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15]) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/compress.bend step @+k:Nat -> @+x:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.St -> @+m0:U32 -> @+m1:U32 -> @+m2:U32 -> @+m3:U32 -> @+m4:U32 -> @+m5:U32 -> @+m6:U32 -> @+m7:U32 -> @+m8:U32 -> @+m9:U32 -> @+m10:U32 -> @+m11:U32 -> @+m12:U32 -> @+m13:U32 -> @+m14:U32 -> @+m15:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.rounds(1n+k, st_list(x), [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15]) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.rounds(k, st_list(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/compress.round(x, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15)), [m2, m6, m3, m10, m7, m0, m4, m13, m1, m11, m12, m5, m9, m14, m15, m8]) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/compress.bend rounds7_correct @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.St -> @+m0:U32 -> @+m1:U32 -> @+m2:U32 -> @+m3:U32 -> @+m4:U32 -> @+m5:U32 -> @+m6:U32 -> @+m7:U32 -> @+m8:U32 -> @+m9:U32 -> @+m10:U32 -> @+m11:U32 -> @+m12:U32 -> @+m13:U32 -> @+m14:U32 -> @+m15:U32 -> {st_list(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/compress.rounds7(s, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.B{m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15})) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.rounds(7n, st_list(s), [m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15]) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/compress.bend fold_correct @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.St -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/compress.fold(s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.output(st_list(s)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/compress.bend init_correct @+c:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV -> @+t:U32 -> @+len:U32 -> @+flags:U32 -> {st_list(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/compress.init(c, t, len, flags)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.init(c, t, len, flags) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/compress.bend compress_correct @+c:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV -> @+b:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block -> @+t:U32 -> @+len:U32 -> @+flags:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/compress.compress(c, b, t, len, flags) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.compress(c, b, t, len, flags) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/loop.bend fuse @+n:Nat -> @+t:U32 -> @+index:U32 -> @+len:Nat -> @a:Array -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.Stack -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.chunks(n, t, index, len, (a, s)) == run(s, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.chunks(n, t, index, len, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.chunk_at(n, t, index, len, a))) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Out} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/proof.bend root_correct @+o:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Out -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.root_cv(o) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.root(o) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/proof.bend unchecked_view @-a:Array -> @+length:Nat -> @view:Sigma<&2, &1, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/blake/blake3/array.Tree, x => {a == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/blake/blake3/array.thaw(x) : Array}> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.unchecked(a, length) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.hash(a, length) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/proof.bend digest_correct @+c:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.digest(c) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.digest(c) : Array} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/proof.bend checked_view @-a:Array -> @+length:Nat -> @view:Sigma<&2, &1, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/blake/blake3/array.Tree, x => {a == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/blake/blake3/array.thaw(x) : Array}> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.checked(True{}, a, length) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.checked(True{}, a, length) : Maybe<&1, Array>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/proof.bend checked_correct @+valid:Bool -> @a:Array -> @+length:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.checked(valid, a, length) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.checked(valid, a, length) : Maybe<&1, Array>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/proof.bend sized_correct @+length:Nat -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.sized(length, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.sized(length, pair) : Maybe<&1, Array>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/proof.bend blake3_correct @words:Array -> @+byte_length:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.blake3(words, byte_length) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.blake3(words, byte_length) : Maybe<&1, Array>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/proof.bend blake3_rejects @a:Array -> @+n:Nat -> @+capacity:U32 -> @invalid:{Nat.is_le(n, Nat.mul(4n, U32.to_nat(capacity))) == False{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.sized(n, (a, capacity)) == None{} : Maybe<&1, Array>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/proof.bend digest_size @+c:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.CV -> {Pair.snd(Array, U32, Array.size(U32, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.digest(c))) == 8 : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/read.bend read15_correct @+index:U32 -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.read15(index, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.as_block(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.gather(0n, index, 16, [w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/read.bend read14_correct @+index:U32 -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.read14(index, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.as_block(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.gather(1n, index, 15, [w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/read.bend read13_correct @+index:U32 -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.read13(index, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.as_block(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.gather(2n, index, 14, [w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/read.bend read12_correct @+index:U32 -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.read12(index, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.as_block(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.gather(3n, index, 13, [w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/read.bend read11_correct @+index:U32 -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.read11(index, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.as_block(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.gather(4n, index, 12, [w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/read.bend read10_correct @+index:U32 -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.read10(index, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.as_block(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.gather(5n, index, 11, [w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/read.bend read9_correct @+index:U32 -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.read9(index, w0, w1, w2, w3, w4, w5, w6, w7, w8, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.as_block(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.gather(6n, index, 10, [w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/read.bend read8_correct @+index:U32 -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.read8(index, w0, w1, w2, w3, w4, w5, w6, w7, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.as_block(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.gather(7n, index, 9, [w7, w6, w5, w4, w3, w2, w1, w0], pair)) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/read.bend read7_correct @+index:U32 -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.read7(index, w0, w1, w2, w3, w4, w5, w6, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.as_block(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.gather(8n, index, 8, [w6, w5, w4, w3, w2, w1, w0], pair)) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/read.bend read6_correct @+index:U32 -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.read6(index, w0, w1, w2, w3, w4, w5, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.as_block(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.gather(9n, index, 7, [w5, w4, w3, w2, w1, w0], pair)) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/read.bend read5_correct @+index:U32 -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.read5(index, w0, w1, w2, w3, w4, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.as_block(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.gather(10n, index, 6, [w4, w3, w2, w1, w0], pair)) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/read.bend read4_correct @+index:U32 -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.read4(index, w0, w1, w2, w3, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.as_block(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.gather(11n, index, 5, [w3, w2, w1, w0], pair)) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/read.bend read3_correct @+index:U32 -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.read3(index, w0, w1, w2, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.as_block(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.gather(12n, index, 4, [w2, w1, w0], pair)) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/read.bend read2_correct @+index:U32 -> @+w0:U32 -> @+w1:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.read2(index, w0, w1, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.as_block(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.gather(13n, index, 3, [w1, w0], pair)) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/read.bend read1_correct @+index:U32 -> @+w0:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.read1(index, w0, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.as_block(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.gather(14n, index, 2, [w0], pair)) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/read.bend read0_correct @+index:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.read0(index, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.as_block(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.gather(15n, index, 1, [], pair)) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/read.bend read_block_correct @a:Array -> @+index:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.read_block(a, index) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.read_block(a, index) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/read.bend partial_low @+w:U32 -> @+d:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.partial(w, d) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.low_bytes(w, Nat.min(4n, d)) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/read.bend mask_keep @+w:U32 -> @+pos:Nat -> @+len:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.mask(w, pos, len) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.keep(w, pos, len) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/read.bend mask_block_correct @+b:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block -> @+len:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/blake3.mask_block(b, len) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.zero_tail(b, len) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/blake/blake3/read.bend zero_tail_full @+b:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/blake/blake3.zero_tail(b, 64n) == b : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/blake/blake3/types.Block} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/core.bend double_round_correct @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/core.State -> {vec(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/core.double_round(s)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.inner_block(vec(s)) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/core.bend rounds_correct @+n:Nat -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/core.State -> {vec(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/core.rounds(n, s)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.inner_blocks(n, vec(s)) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/core.bend add_correct @+a:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/core.State -> @+b:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/core.State -> {vec(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/core.add(a, b)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.add_words(vec(a), vec(b)) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/core.bend bytes_correct @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/core.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/core.bytes(s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.serialize(vec(s)) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/core.bend block_correct @+n:Nat -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/core.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/core.bytes(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/core.block(n, s)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.serialize(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.add_words(vec(s), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.inner_blocks(n, vec(s)))) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/core.bend init_correct @+k0:U32 -> @+k1:U32 -> @+k2:U32 -> @+k3:U32 -> @+k4:U32 -> @+k5:U32 -> @+k6:U32 -> @+k7:U32 -> @+c:U32 -> @+n0:U32 -> @+n1:U32 -> @+n2:U32 -> {vec(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/core.init(k0, k1, k2, k3, k4, k5, k6, k7, c, n0, n1, n2)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.state([k0, k1, k2, k3, k4, k5, k6, k7], c, [n0, n1, n2]) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/core.bend hinit_correct @+k0:U32 -> @+k1:U32 -> @+k2:U32 -> @+k3:U32 -> @+k4:U32 -> @+k5:U32 -> @+k6:U32 -> @+k7:U32 -> @+n0:U32 -> @+n1:U32 -> @+n2:U32 -> @+n3:U32 -> {vec(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/core.hinit(k0, k1, k2, k3, k4, k5, k6, k7, n0, n1, n2, n3)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.hstate([k0, k1, k2, k3, k4, k5, k6, k7], [n0, n1, n2, n3]) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/core.bend hbytes_correct @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/core.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/core.hbytes(s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.serialize([0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.get(vec(s), 0n), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.get(vec(s), 1n), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.get(vec(s), 2n), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.get(vec(s), 3n), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.get(vec(s), 12n), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.get(vec(s), 13n), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.get(vec(s), 14n), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.get(vec(s), 15n)]) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/involution.bend wxor_inv @+n:Nat -> @+a:Word(n) -> @+b:Word(n) -> {Word.xor(n, Word.xor(n, a, b), b) == a : Word(n)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/involution.bend u32_xor_inv @+a:U32 -> @+b:U32 -> {U32.xor(U32.xor(a, b), b) == a : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/involution.bend length_append @+xs:List<&2, U32> -> @+ys:List<&2, U32> -> {List.length(&2, U32, List.append(&2, U32, xs, ys)) == Nat.add(List.length(&2, U32, xs), List.length(&2, U32, ys)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/involution.bend le_add @+p:Nat -> @+l:Nat -> @+k:Nat -> @+h:{Nat.is_le(p, l) == True{} : Bool} -> {Nat.is_le(p, Nat.add(k, l)) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/involution.bend xor_length @+xs:List<&2, U32> -> @+ks:List<&2, U32> -> @+h:{Nat.is_le(List.length(&2, U32, xs), List.length(&2, U32, ks)) == True{} : Bool} -> {List.length(&2, U32, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.xor_bytes(xs, ks)) == List.length(&2, U32, xs) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/involution.bend xor_twice @+xs:List<&2, U32> -> @+ks:List<&2, U32> -> @+h:{Nat.is_le(List.length(&2, U32, xs), List.length(&2, U32, ks)) == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.xor_bytes(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.xor_bytes(xs, ks), ks) == xs : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/involution.bend ks_length @+fuel:Nat -> @+r:Nat -> @+kb:List<&2, U32> -> @+c:U32 -> @+nb:List<&2, U32> -> {Nat.is_le(fuel, List.length(&2, U32, ks(fuel, r, kb, c, nb))) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/involution.bend xor_append @+bs:List<&2, U32> -> @+xs:List<&2, U32> -> @+k:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.xor_bytes(xs, List.append(&2, U32, bs, k)) == List.append(&2, U32, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.xor_bytes(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.prefix(List.length(&2, U32, bs), xs), bs), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.xor_bytes(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.suffix(List.length(&2, U32, bs), xs), k)) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/involution.bend enc_ks @+fuel:Nat -> @+xs:List<&2, U32> -> @+r:Nat -> @+kb:List<&2, U32> -> @+c:U32 -> @+nb:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.encrypt_blocks(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.blocks(fuel, xs), r, kb, c, nb) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.xor_bytes(xs, ks(fuel, r, kb, c, nb)) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/involution.bend encrypt_xor @+r:Nat -> @+kb:List<&2, U32> -> @+c:U32 -> @+nb:List<&2, U32> -> @+pt:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.encrypt_rounds(r, kb, c, nb, pt) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.xor_bytes(pt, ks(List.length(&2, U32, pt), r, kb, c, nb)) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/involution.bend encrypt_length @+r:Nat -> @+kb:List<&2, U32> -> @+c:U32 -> @+nb:List<&2, U32> -> @+pt:List<&2, U32> -> {List.length(&2, U32, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.encrypt_rounds(r, kb, c, nb, pt)) == List.length(&2, U32, pt) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/involution.bend involution @+r:Nat -> @+kb:List<&2, U32> -> @+c:U32 -> @+nb:List<&2, U32> -> @+pt:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.encrypt_rounds(r, kb, c, nb, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.encrypt_rounds(r, kb, c, nb, pt)) == pt : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/proof.bend when_true @+ok:Bool -> @+x:List<&2, U32> -> @+h:{ok == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.when(ok, x) == Some{x} : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/proof.bend when_false @+ok:Bool -> @+x:List<&2, U32> -> @+h:{ok == False{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.when(ok, x) == None{} : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/proof.bend valid_true @+key:List<&2, U32> -> @+nonce:List<&2, U32> -> @+n:Nat -> @+hk:{List.length(&2, U32, key) == 32n : Nat} -> @+hn:{List.length(&2, U32, nonce) == n : Nat} -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.valid(key, nonce, n) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/stream.bend words_eq @+xs:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.words(xs) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.words(xs) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/stream.bend key_eq @+ws:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.key_words(ws) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.K{0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.get(ws, 0n), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.get(ws, 1n), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.get(ws, 2n), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.get(ws, 3n), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.get(ws, 4n), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.get(ws, 5n), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.get(ws, 6n), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.get(ws, 7n)} : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.Key} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/stream.bend nonce_eq @+ws:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.nonce_words(ws) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.N{0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.get(ws, 0n), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.get(ws, 1n), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.get(ws, 2n)} : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.Nonce} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/stream.bend hnonce_eq @+ws:List<&2, U32> -> {[0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.at(ws, 0n), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.at(ws, 1n), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.at(ws, 2n), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.at(ws, 3n)] == [0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.get(ws, 0n), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.get(ws, 1n), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.get(ws, 2n), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.get(ws, 3n)] : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/stream.bend state_eq @+ks:List<&2, U32> -> @+c:U32 -> @+ns:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/chacha/core.vec(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.state(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.key_words(ks), c, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.nonce_words(ns))) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.state(ks, c, ns) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/stream.bend hstate_eq @+ks:List<&2, U32> -> @+ns:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/chacha/core.vec(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.hstate(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.key_words(ks), ns)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.hstate(ks, ns) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/stream.bend body_correct @+r:Nat -> @+kb:List<&2, U32> -> @+c:U32 -> @+nb:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.keystream(r, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.key(kb), c, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.nonce(nb)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.block_body(r, kb, c, nb) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/stream.bend keystream_correct @+r:Nat -> @+kb:List<&2, U32> -> @+c:U32 -> @+nb:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.keystream(r, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.key(kb), c, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.nonce(nb)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.block_rounds(r, kb, c, nb) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/stream.bend block_rounds_correct @+r:Nat -> @+kb:List<&2, U32> -> @+c:U32 -> @+nb:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.block_rounds(r, kb, c, nb) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.block_rounds(r, kb, c, nb) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/stream.bend bytes_length @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/core.State -> {List.length(&2, U32, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/core.bytes(s)) == 64n : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/stream.bend block_length @+r:Nat -> @+kb:List<&2, U32> -> @+c:U32 -> @+nb:List<&2, U32> -> {List.length(&2, U32, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.block_rounds(r, kb, c, nb)) == 64n : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/stream.bend xor_front_eq @+ks:List<&2, U32> -> @+xs:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.xor_front(ks, xs) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.xor_bytes(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.prefix(List.length(&2, U32, ks), xs), ks) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/stream.bend skip_eq @+n:Nat -> @+xs:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.skip(n, xs) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.suffix(n, xs) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/stream.bend take_eq @+n:Nat -> @+xs:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.take(n, xs) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.prefix(n, xs) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/stream.bend front_correct @+r:Nat -> @+kb:List<&2, U32> -> @+c:U32 -> @+nb:List<&2, U32> -> @+xs:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.xor_front(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.keystream(r, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.key(kb), c, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.nonce(nb)), xs) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.xor_bytes(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.prefix(64n, xs), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.block_rounds(r, kb, c, nb)) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/stream.bend stream_correct @+fuel:Nat -> @+xs:List<&2, U32> -> @+r:Nat -> @+kb:List<&2, U32> -> @+c:U32 -> @+nb:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.stream(fuel, xs, r, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.key(kb), c, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.nonce(nb)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.encrypt_blocks(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.blocks(fuel, xs), r, kb, c, nb) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/stream.bend encrypt_correct @+r:Nat -> @+kb:List<&2, U32> -> @+c:U32 -> @+nb:List<&2, U32> -> @+pt:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.encrypt_rounds(r, kb, c, nb, pt) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.encrypt_rounds(r, kb, c, nb, pt) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/xchacha.bend hbody_correct @+r:Nat -> @+kb:List<&2, U32> -> @+nb:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.hchacha_body(r, kb, nb) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.hchacha_body(r, kb, nb) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/xchacha.bend hchacha_rounds_correct @+r:Nat -> @+kb:List<&2, U32> -> @+nb:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.hchacha_rounds(r, kb, nb) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.hchacha_rounds(r, kb, nb) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/xchacha.bend hchacha20_correct @+kb:List<&2, U32> -> @+nb:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.hchacha20_unchecked(kb, nb) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.hchacha20(kb, nb) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/chacha/xchacha.bend xencrypt_correct @+kb:List<&2, U32> -> @+c:U32 -> @+nb:List<&2, U32> -> @+pt:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/chacha/chacha20.xencrypt_unchecked(kb, c, nb, pt) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/chacha.xencrypt(kb, c, nb, pt) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/incremental.bend absorb256_inv @+fuel:Nat -> @+bytes:List<&2, U32> -> @+q:Nat -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+z:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.block_bytes(List.append(&2, U32, bytes, z), q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.round_constants, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.block_bytes(List.append(&2, U32, buf256(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.absorb256(fuel, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.read256_0(bytes), bytes, q, s)), z), q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.round_constants, st256(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.absorb256(fuel, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.read256_0(bytes), bytes, q, s))) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/incremental.bend step256_inv @+st:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.Sha256State -> @+xs:List<&2, U32> -> @+q:Nat -> @+z:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.block_bytes(List.append(&2, U32, List.append(&2, U32, buf256(st), xs), z), q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.round_constants, st256(st)) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.block_bytes(List.append(&2, U32, buf256(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.step256(st, xs, q)), z), q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.round_constants, st256(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.step256(st, xs, q))) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/incremental.bend fold256_inv @+cs:List<&2, List<&2, U32>> -> @+q:Nat -> @+st:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.Sha256State -> @+z:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.block_bytes(List.append(&2, U32, List.append(&2, U32, buf256(st), List.concat(&2, U32, cs)), z), q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.round_constants, st256(st)) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.block_bytes(List.append(&2, U32, buf256(fold256(cs, q, st)), z), q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.round_constants, st256(fold256(cs, q, st))) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/incremental.bend state256 @+cs:List<&2, List<&2, U32>> -> @+st:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.Sha256State -> @+len:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.fold(cs, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.Sha256H{st, len}) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.Sha256H{fold256(cs, 48n, st), Nat.add(len, List.length(&2, U32, List.concat(&2, U32, cs)))} : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.Hasher} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/incremental.bend finish256_eta @+st:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.Sha256State -> @+len:Nat -> @+q:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.finish256(st, len, q) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/sha256.digest_bytes(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.digest(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.block_bytes(List.append(&2, U32, buf256(st), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.suffix(len)), q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.round_constants, st256(st)))) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/incremental.bend incremental256 @+cs:List<&2, List<&2, U32>> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.digest(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.update_all(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.new_sha256, cs)) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/sha256.digest_bytes(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.digest(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.block_bytes(List.append(&2, U32, List.concat(&2, U32, cs), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.suffix(List.length(&2, U32, List.concat(&2, U32, cs)))), 48n, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.round_constants, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.initial))) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/incremental.bend absorb512_inv @+fuel:Nat -> @+bytes:List<&2, U32> -> @+q:Nat -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.State -> @+z:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.blocks(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.lanes(List.append(&2, U32, bytes, z)), q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.round_constants, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.blocks(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.lanes(List.append(&2, U32, buf512(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.absorb512(fuel, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.read512_0(bytes), bytes, q, s)), z)), q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.round_constants, st512(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.absorb512(fuel, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.read512_0(bytes), bytes, q, s))) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/incremental.bend step512_inv @+st:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.Sha512State -> @+xs:List<&2, U32> -> @+q:Nat -> @+z:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.blocks(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.lanes(List.append(&2, U32, List.append(&2, U32, buf512(st), xs), z)), q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.round_constants, st512(st)) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.blocks(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.lanes(List.append(&2, U32, buf512(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.step512(st, xs, q)), z)), q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.round_constants, st512(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.step512(st, xs, q))) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/incremental.bend fold512_inv @+cs:List<&2, List<&2, U32>> -> @+q:Nat -> @+st:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.Sha512State -> @+z:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.blocks(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.lanes(List.append(&2, U32, List.append(&2, U32, buf512(st), List.concat(&2, U32, cs)), z)), q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.round_constants, st512(st)) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.blocks(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.lanes(List.append(&2, U32, buf512(fold512(cs, q, st)), z)), q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.round_constants, st512(fold512(cs, q, st))) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/incremental.bend state512 @+cs:List<&2, List<&2, U32>> -> @+st:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.Sha512State -> @+len:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.fold(cs, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.Sha512H{st, len}) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.Sha512H{fold512(cs, 64n, st), Nat.add(len, List.length(&2, U32, List.concat(&2, U32, cs)))} : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.Hasher} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/incremental.bend finish512_eta @+st:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.Sha512State -> @+len:Nat -> @+q:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.finish512(st, len, q) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.digest_bytes(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.blocks(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.lanes(List.append(&2, U32, buf512(st), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.suffix(len))), q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.round_constants, st512(st))) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/incremental.bend incremental512 @+cs:List<&2, List<&2, U32>> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.digest(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.update_all(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.new_sha512, cs)) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.digest_bytes(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.blocks(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.lanes(List.append(&2, U32, List.concat(&2, U32, cs), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.suffix(List.length(&2, U32, List.concat(&2, U32, cs))))), 64n, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.round_constants, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.initial)) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/incremental.bend absorb3_inv @+fuel:Nat -> @+bytes:List<&2, U32> -> @+q:Nat -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+z:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.absorb(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.lanes(List.append(&2, U32, bytes, z)), q, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.absorb(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.lanes(List.append(&2, U32, buf3(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.absorb3(fuel, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.read3_0(bytes), bytes, q, s)), z)), q, st3(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.absorb3(fuel, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.read3_0(bytes), bytes, q, s))) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/incremental.bend step3_inv @+st:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.Sha3State -> @+xs:List<&2, U32> -> @+q:Nat -> @+z:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.absorb(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.lanes(List.append(&2, U32, List.append(&2, U32, buf3(st), xs), z)), q, st3(st)) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.absorb(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.lanes(List.append(&2, U32, buf3(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.step3(st, xs, q)), z)), q, st3(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.step3(st, xs, q))) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/incremental.bend fold3_inv @+cs:List<&2, List<&2, U32>> -> @+q:Nat -> @+st:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.Sha3State -> @+z:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.absorb(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.lanes(List.append(&2, U32, List.append(&2, U32, buf3(st), List.concat(&2, U32, cs)), z)), q, st3(st)) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.absorb(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.lanes(List.append(&2, U32, buf3(fold3(cs, q, st)), z)), q, st3(fold3(cs, q, st))) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/incremental.bend state3 @+cs:List<&2, List<&2, U32>> -> @+st:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.Sha3State -> @+len:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.fold(cs, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.Sha3H{st, len}) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.Sha3H{fold3(cs, 24n, st), Nat.add(len, List.length(&2, U32, List.concat(&2, U32, cs)))} : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.Hasher} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/incremental.bend finish3_eta @+st:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.Sha3State -> @+len:Nat -> @+q:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.finish3(st, len, q) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.digest_bytes(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.absorb(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.lanes(List.append(&2, U32, buf3(st), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.suffix(len))), q, st3(st))) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/incremental.bend incremental3 @+cs:List<&2, List<&2, U32>> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.digest(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.update_all(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.new_sha3_256, cs)) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.digest_bytes(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.absorb(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.lanes(List.append(&2, U32, List.concat(&2, U32, cs), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.suffix(List.length(&2, U32, List.concat(&2, U32, cs))))), 24n, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.zero)) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/lists.bend append_nil @+xs:List<&2, U32> -> {List.append(&2, U32, xs, []) == xs : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/lists.bend append_assoc @+xs:List<&2, U32> -> @+ys:List<&2, U32> -> @+zs:List<&2, U32> -> {List.append(&2, U32, List.append(&2, U32, xs, ys), zs) == List.append(&2, U32, xs, List.append(&2, U32, ys, zs)) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/lists.bend append_assoc_rev @+xs:List<&2, U32> -> @+ys:List<&2, U32> -> @+zs:List<&2, U32> -> {List.append(&2, U32, xs, List.append(&2, U32, ys, zs)) == List.append(&2, U32, List.append(&2, U32, xs, ys), zs) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/lists.bend add_zero @+n:Nat -> {Nat.add(n, 0n) == n : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/lists.bend add_assoc @+a:Nat -> @+b:Nat -> @+c:Nat -> {Nat.add(Nat.add(a, b), c) == Nat.add(a, Nat.add(b, c)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/lists.bend length_append @+xs:List<&2, U32> -> @+ys:List<&2, U32> -> {List.length(&2, U32, List.append(&2, U32, xs, ys)) == Nat.add(List.length(&2, U32, xs), List.length(&2, U32, ys)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/lists.bend add_length @+n:Nat -> @+xs:List<&2, U32> -> @+ys:List<&2, U32> -> {Nat.add(Nat.add(n, List.length(&2, U32, xs)), List.length(&2, U32, ys)) == Nat.add(n, List.length(&2, U32, List.append(&2, U32, xs, ys))) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/hash/proof.bend oneshot256 @+m:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/hash.sha256(m) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/sha256.digest_bytes(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.digest(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.block_bytes(List.append(&2, U32, m, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.suffix(List.length(&2, U32, m))), 48n, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.round_constants, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.initial))) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/api.bend rejected @a:Array -> @n:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.checked(24n, False{}, a, n) == None{} : Maybe<&1, Array>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/api.bend digest_size @s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> {Pair.snd(Array, U32, Array.size(U32, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.digest(s))) == 8 : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/api.bend digest_word0 @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> {Pair.snd(Array, U32, Array.get(U32, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.digest(s), 0)) == word0(s) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/api.bend digest_word1 @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> {Pair.snd(Array, U32, Array.get(U32, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.digest(s), 1)) == word1(s) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/api.bend digest_word2 @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> {Pair.snd(Array, U32, Array.get(U32, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.digest(s), 2)) == word2(s) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/api.bend digest_word3 @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> {Pair.snd(Array, U32, Array.get(U32, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.digest(s), 3)) == word3(s) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/api.bend digest_word4 @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> {Pair.snd(Array, U32, Array.get(U32, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.digest(s), 4)) == word4(s) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/api.bend digest_word5 @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> {Pair.snd(Array, U32, Array.get(U32, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.digest(s), 5)) == word5(s) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/api.bend digest_word6 @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> {Pair.snd(Array, U32, Array.get(U32, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.digest(s), 6)) == word6(s) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/api.bend digest_word7 @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> {Pair.snd(Array, U32, Array.get(U32, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.digest(s), 7)) == word7(s) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/api.bend capacity_gate @a:Array -> @+n:Nat -> @+capacity:U32 -> @invalid:{Nat.is_le(n, Nat.mul(4n, U32.to_nat(capacity))) == False{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.sized(24n, n, (a, capacity)) == None{} : Maybe<&1, Array>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/api.bend suffix0 @w:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.partial(w, 0n) == 1 : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/api.bend suffix1 @+w:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.partial(w, 1n) == U32.or(U32.and(w, 255), 256) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/api.bend suffix2 @+w:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.partial(w, 2n) == U32.or(U32.and(w, 65535), 65536) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/api.bend suffix3 @+w:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.partial(w, 3n) == U32.or(U32.and(w, 16777215), 16777216) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/api.bend whole_word @+w:U32 -> @n:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.partial(w, 4n+n) == w : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/api.bend empty_suffix @w:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w, 0n, 0n) == 1 : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/api.bend empty_last_word @w:U32 -> {U32.or(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w, 132n, 0n), 2147483648) == 2147483648 : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/api.bend combined_padding @+w:U32 -> {U32.or(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w, 132n, 135n), 2147483648) == U32.or(U32.or(U32.and(w, 16777215), 16777216), 2147483648) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/array.bend reify @a:Array -> Sigma<&2, &1, Tree, t => {a == thaw(t) : Array}> bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/array.bend reify_node @-l:Array -> @-r:Array -> @left:Sigma<&2, &1, Tree, t => {l == thaw(t) : Array}> -> @right:Sigma<&2, &1, Tree, t => {r == thaw(t) : Array}> -> Sigma<&2, &1, Tree, t => {ANode{l, r} == thaw(t) : Array}> bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/permutation.bend round_correct @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+rc:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/permutation.round(s, rc) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/permutation.round(s, rc) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/permutation.bend constants_correct @+n:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/permutation.constant(n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/permutation.constant(n) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.Lane} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/permutation.bend pair_step @+n:Nat -> @+i:Nat -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/permutation.rounds(2n+n, i, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/permutation.rounds(n, 2n+i, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/permutation.round(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/permutation.round(s, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/permutation.constant(i)), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/permutation.constant(1n+i))) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/permutation.bend single_step @+i:Nat -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/permutation.rounds(1n, i, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/permutation.round(s, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/permutation.constant(i)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/permutation.bend step_correct @+i:Nat -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/permutation.round(s, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/permutation.constant(i)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/permutation.round(s, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/permutation.constant(i)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/permutation.bend two_correct @+i:Nat -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/permutation.round(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/permutation.round(s, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/permutation.constant(i)), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/permutation.constant(1n+i)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/permutation.round(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/permutation.round(s, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/permutation.constant(i)), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/permutation.constant(1n+i)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/permutation.bend rounds_correct @+n:Nat -> @+i:Nat -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/permutation.rounds(n, i, s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/permutation.rounds(n, i, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend mix_correct @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @+w30:U32 -> @+w31:U32 -> @+w32:U32 -> @+w33:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.mix(s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, w31, w32, w33) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.inject(s, [w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, w31, w32, w33]) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend compress_correct @+r:Nat -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @+w30:U32 -> @+w31:U32 -> @+w32:U32 -> @+w33:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/permutation.rounds(r, 0n, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.mix(s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, w31, w32, w33)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/permutation.rounds(r, 0n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.inject(s, [w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, w31, w32, w33])) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read33_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @+w30:U32 -> @+w31:U32 -> @+w32:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read33(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, w31, w32, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 0n, index, 34, False{}, 0n, s, [w32, w31, w30, w29, w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read32_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @+w30:U32 -> @+w31:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read32(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, w31, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 1n, index, 33, False{}, 0n, s, [w31, w30, w29, w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read31_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @+w30:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read31(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 2n, index, 32, False{}, 0n, s, [w30, w29, w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read30_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read30(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 3n, index, 31, False{}, 0n, s, [w29, w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read29_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read29(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 4n, index, 30, False{}, 0n, s, [w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read28_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read28(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 5n, index, 29, False{}, 0n, s, [w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read27_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read27(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 6n, index, 28, False{}, 0n, s, [w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read26_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read26(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 7n, index, 27, False{}, 0n, s, [w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read25_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read25(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 8n, index, 26, False{}, 0n, s, [w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read24_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read24(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 9n, index, 25, False{}, 0n, s, [w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read23_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read23(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 10n, index, 24, False{}, 0n, s, [w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read22_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read22(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 11n, index, 23, False{}, 0n, s, [w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read21_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read21(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 12n, index, 22, False{}, 0n, s, [w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read20_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read20(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 13n, index, 21, False{}, 0n, s, [w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read19_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read19(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 14n, index, 20, False{}, 0n, s, [w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read18_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read18(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 15n, index, 19, False{}, 0n, s, [w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read17_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read17(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 16n, index, 18, False{}, 0n, s, [w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read16_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read16(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 17n, index, 17, False{}, 0n, s, [w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read15_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read15(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 18n, index, 16, False{}, 0n, s, [w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read14_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read14(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 19n, index, 15, False{}, 0n, s, [w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read13_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read13(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 20n, index, 14, False{}, 0n, s, [w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read12_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read12(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 21n, index, 13, False{}, 0n, s, [w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read11_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read11(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 22n, index, 12, False{}, 0n, s, [w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read10_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read10(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 23n, index, 11, False{}, 0n, s, [w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read9_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read9(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 24n, index, 10, False{}, 0n, s, [w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read8_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read8(r, index, s, w0, w1, w2, w3, w4, w5, w6, w7, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 25n, index, 9, False{}, 0n, s, [w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read7_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read7(r, index, s, w0, w1, w2, w3, w4, w5, w6, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 26n, index, 8, False{}, 0n, s, [w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read6_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read6(r, index, s, w0, w1, w2, w3, w4, w5, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 27n, index, 7, False{}, 0n, s, [w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read5_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read5(r, index, s, w0, w1, w2, w3, w4, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 28n, index, 6, False{}, 0n, s, [w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read4_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read4(r, index, s, w0, w1, w2, w3, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 29n, index, 5, False{}, 0n, s, [w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read3_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read3(r, index, s, w0, w1, w2, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 30n, index, 4, False{}, 0n, s, [w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read2_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read2(r, index, s, w0, w1, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 31n, index, 3, False{}, 0n, s, [w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read1_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read1(r, index, s, w0, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 32n, index, 2, False{}, 0n, s, [w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend read0_correct @+r:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.read0(r, index, s, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 33n, index, 1, False{}, 0n, s, [], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend padding_correct @+remain:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @+w30:U32 -> @+w31:U32 -> @+w32:U32 -> @+w33:U32 -> {[0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w0, 0n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w1, 4n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w2, 8n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w3, 12n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w4, 16n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w5, 20n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w6, 24n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w7, 28n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w8, 32n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w9, 36n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w10, 40n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w11, 44n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w12, 48n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w13, 52n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w14, 56n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w15, 60n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w16, 64n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w17, 68n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w18, 72n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w19, 76n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w20, 80n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w21, 84n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w22, 88n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w23, 92n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w24, 96n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w25, 100n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w26, 104n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w27, 108n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w28, 112n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w29, 116n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w30, 120n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w31, 124n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w32, 128n, remain), U32.or(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w33, 132n, remain), 2147483648)] == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.prepare(True{}, [w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, w31, w32, w33], remain) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend padded_compress_correct @+r:Nat -> @+remain:Nat -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @+w30:U32 -> @+w31:U32 -> @+w32:U32 -> @+w33:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/permutation.rounds(r, 0n, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.mix(s, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w0, 0n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w1, 4n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w2, 8n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w3, 12n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w4, 16n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w5, 20n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w6, 24n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w7, 28n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w8, 32n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w9, 36n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w10, 40n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w11, 44n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w12, 48n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w13, 52n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w14, 56n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w15, 60n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w16, 64n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w17, 68n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w18, 72n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w19, 76n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w20, 80n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w21, 84n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w22, 88n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w23, 92n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w24, 96n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w25, 100n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w26, 104n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w27, 108n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w28, 112n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w29, 116n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w30, 120n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w31, 124n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w32, 128n, remain), U32.or(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad_word(w33, 132n, remain), 2147483648))) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/permutation.rounds(r, 0n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.inject(s, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.prepare(True{}, [w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, w31, w32, w33], remain))) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad33_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @+w30:U32 -> @+w31:U32 -> @+w32:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad33(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, w31, w32, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 0n, index, 34, True{}, remain, s, [w32, w31, w30, w29, w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad32_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @+w30:U32 -> @+w31:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad32(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, w31, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 1n, index, 33, True{}, remain, s, [w31, w30, w29, w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad31_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @+w30:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad31(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, w30, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 2n, index, 32, True{}, remain, s, [w30, w29, w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad30_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @+w29:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad30(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, w29, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 3n, index, 31, True{}, remain, s, [w29, w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad29_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @+w28:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad29(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, w28, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 4n, index, 30, True{}, remain, s, [w28, w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad28_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @+w27:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad28(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, w27, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 5n, index, 29, True{}, remain, s, [w27, w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad27_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @+w26:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad27(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, w26, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 6n, index, 28, True{}, remain, s, [w26, w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad26_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @+w25:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad26(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, w25, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 7n, index, 27, True{}, remain, s, [w25, w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad25_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @+w24:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad25(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, w24, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 8n, index, 26, True{}, remain, s, [w24, w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad24_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @+w23:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad24(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, w23, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 9n, index, 25, True{}, remain, s, [w23, w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad23_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @+w22:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad23(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, w22, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 10n, index, 24, True{}, remain, s, [w22, w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad22_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @+w21:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad22(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, w21, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 11n, index, 23, True{}, remain, s, [w21, w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad21_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @+w20:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad21(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, w20, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 12n, index, 22, True{}, remain, s, [w20, w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad20_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @+w19:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad20(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, w19, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 13n, index, 21, True{}, remain, s, [w19, w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad19_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @+w18:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad19(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, w18, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 14n, index, 20, True{}, remain, s, [w18, w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad18_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @+w17:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad18(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, w17, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 15n, index, 19, True{}, remain, s, [w17, w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad17_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+w16:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad17(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, w16, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 16n, index, 18, True{}, remain, s, [w16, w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad16_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad16(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 17n, index, 17, True{}, remain, s, [w15, w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad15_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad15(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 18n, index, 16, True{}, remain, s, [w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad14_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad14(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 19n, index, 15, True{}, remain, s, [w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad13_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad13(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 20n, index, 14, True{}, remain, s, [w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad12_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad12(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 21n, index, 13, True{}, remain, s, [w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad11_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad11(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 22n, index, 12, True{}, remain, s, [w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad10_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad10(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 23n, index, 11, True{}, remain, s, [w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad9_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad9(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 24n, index, 10, True{}, remain, s, [w8, w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad8_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad8(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, w7, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 25n, index, 9, True{}, remain, s, [w7, w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad7_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad7(r, remain, index, s, w0, w1, w2, w3, w4, w5, w6, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 26n, index, 8, True{}, remain, s, [w6, w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad6_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad6(r, remain, index, s, w0, w1, w2, w3, w4, w5, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 27n, index, 7, True{}, remain, s, [w5, w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad5_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad5(r, remain, index, s, w0, w1, w2, w3, w4, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 28n, index, 6, True{}, remain, s, [w4, w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad4_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad4(r, remain, index, s, w0, w1, w2, w3, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 29n, index, 5, True{}, remain, s, [w3, w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad3_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad3(r, remain, index, s, w0, w1, w2, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 30n, index, 4, True{}, remain, s, [w2, w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad2_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @+w1:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad2(r, remain, index, s, w0, w1, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 31n, index, 3, True{}, remain, s, [w1, w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad1_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+w0:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad1(r, remain, index, s, w0, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 32n, index, 2, True{}, remain, s, [w0], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend pad0_correct @+r:Nat -> @+remain:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.pad0(r, remain, index, s, pair) == Pair.snd(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.gather(r, 33n, index, 1, True{}, remain, s, [], pair)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend absorb_correct @+r:Nat -> @a:Array -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.absorb(r, a, index, s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.absorb(r, a, index, s) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend finish_correct @+r:Nat -> @a:Array -> @+index:U32 -> @+remain:Nat -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.finish(r, a, index, remain, s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.finish(r, a, index, remain, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend blocks_correct @+r:Nat -> @+n:Nat -> @+index:U32 -> @+remain:Nat -> @pair:Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.blocks(r, n, index, remain, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.blocks(r, n, index, remain, pair) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend blocks_step @+r:Nat -> @+n:Nat -> @+index:U32 -> @+remain:Nat -> @-a:Array -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @view:Sigma<&2, &1, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/keccak/array.Tree, t => {a == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/keccak/array.thaw(t) : Array}> -> @recurse:(@pair:Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.blocks(r, n, U32.add(index, 34), remain, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.blocks(r, n, U32.add(index, 34), remain, pair) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State}) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.blocks(r, 1n+n, index, remain, (a, s)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.blocks(r, 1n+n, index, remain, (a, s)) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend unchecked_correct @+r:Nat -> @a:Array -> @+length:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.unchecked(r, a, length) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.unchecked(r, a, length) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend digest_correct @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.digest(s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.digest(s) : Array} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend checked_true_reified @+r:Nat -> @-a:Array -> @+length:Nat -> @view:Sigma<&2, &1, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/keccak/array.Tree, t => {a == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/keccak/array.thaw(t) : Array}> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.checked(r, True{}, a, length) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.checked(r, True{}, a, length) : Maybe<&1, Array>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend checked_correct @+r:Nat -> @+valid:Bool -> @a:Array -> @+length:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.checked(r, valid, a, length) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.checked(r, valid, a, length) : Maybe<&1, Array>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend sized_correct @+r:Nat -> @+length:Nat -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.sized(r, length, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.sized(r, length, pair) : Maybe<&1, Array>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend hash_correct @+r:Nat -> @a:Array -> @+length:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.keccak256_rounds(r, a, length) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.keccak256_rounds(r, a, length) : Maybe<&1, Array>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend ethereum_round_count @a:Array -> @+length:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.keccak256(a, length) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.keccak256_rounds(24n, a, length) : Maybe<&1, Array>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/keccak/sponge.bend public_correct @a:Array -> @+length:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/keccak.keccak256(a, length) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/keccak/main.keccak256_rounds(24n, a, length) : Maybe<&1, Array>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/final.bend wand0 @+n:Nat -> @+w:Word(n) -> {Word.and(n, Word.zero(n), w) == Word.zero(n) : Word(n)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/final.bend wand1 @+n:Nat -> @+w:Word(n) -> {Word.and(n, wones(n), w) == w : Word(n)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/final.bend wxor0 @+n:Nat -> @+w:Word(n) -> {Word.xor(n, w, Word.zero(n)) == w : Word(n)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/final.bend wxor2 @+n:Nat -> @+x:Word(n) -> @+y:Word(n) -> {Word.xor(n, x, Word.xor(n, x, y)) == y : Word(n)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/final.bend sel0 @+a:List<&2, U32> -> @+b:List<&2, U32> -> @+h:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(a) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(b) : Nat} -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.select(0, a, b) == a : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/final.bend sel1 @+a:List<&2, U32> -> @+b:List<&2, U32> -> @+h:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(a) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(b) : Nat} -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.select(4294967295, a, b) == b : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/final.bend len_take_eq @+n:Nat -> @+xs:List<&2, U32> -> @+h:{Nat.is_le(n, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(xs)) == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.take(n, xs)) == n : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/final.bend g_ev @+one:Nat -> @+h1:{one == 1n : Nat} -> @+h:List<&2, U32> -> @+hh:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/step.inv(h) == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(gg(h)) == Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(h), 5n) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/final.bend hsplit @+h:List<&2, U32> -> @+hh:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/step.inv(h) == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(h) == Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.take(16n, h)), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.pos(16n, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.v(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.hd0(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.skip(16n, h))))) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/final.bend hlt @+one:Nat -> @+h1:{one == 1n : Nat} -> @+h:List<&2, U32> -> @+hh:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/step.inv(h) == True{} : Bool} -> {Nat.is_lt(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(h), Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.pos(16n, one), 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(130n, one))) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/final.bend gsplit @+one:Nat -> @+h1:{one == 1n : Nat} -> @+h:List<&2, U32> -> @+hh:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/step.inv(h) == True{} : Bool} -> {Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(h), 5n) == Nat.add(lg(h), 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(128n, tg(h))) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/final.bend bval @+one:Nat -> @+h1:{one == 1n : Nat} -> @+h:List<&2, U32> -> @+hh:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/step.inv(h) == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.v(bb(h)) == qq(h) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/final.bend qlt2 @+one:Nat -> @+h1:{one == 1n : Nat} -> @+h:List<&2, U32> -> @+hh:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/step.inv(h) == True{} : Bool} -> {Nat.is_lt(qq(h), 2n) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/final.bend freeze_fit @+one:Nat -> @+h1:{one == 1n : Nat} -> @+h:List<&2, U32> -> @+hh:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/step.inv(h) == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.fit_all(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.freeze(h), 8n) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/final.bend freeze_len @+one:Nat -> @+h1:{one == 1n : Nat} -> @+h:List<&2, U32> -> @+hh:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/step.inv(h) == True{} : Bool} -> {Nat.is_le(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.freeze(h)), 16n) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/final.bend elg_k @+k:Nat -> @+x:Nat -> @+lgv:Nat -> @+tgv:Nat -> @+d:Nat -> @+s2:Nat -> @+hs:{x == Nat.add(lgv, 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(k, tgv)) : Nat} -> @+hf:{0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.fits(k, lgv) == True{} : Bool} -> @+hx:{x == Nat.add(d, 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(k, s2)) : Nat} -> {lgv == 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.low(k, d) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/final.bend fin_k @+k:Nat -> @+a:Nat -> @+b:Nat -> @+c:Nat -> @+m:Nat -> @+e1:{a == b : Nat} -> @+e2:{b == 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.low(k, c) : Nat} -> @+e3:{m == c : Nat} -> {a == 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.low(k, m) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/final.bend fe_k @+k:Nat -> @+x:Nat -> @+lgv:Nat -> @+tgv:Nat -> @+d:Nat -> @+s2:Nat -> @+a:Nat -> @+m:Nat -> @+hs:{x == Nat.add(lgv, 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(k, tgv)) : Nat} -> @+hf:{0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.fits(k, lgv) == True{} : Bool} -> @+hx:{x == Nat.add(d, 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(k, s2)) : Nat} -> @+e1:{a == lgv : Nat} -> @+e3:{m == d : Nat} -> {a == 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.low(k, m) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/final.bend freeze_ev @+one:Nat -> @+h1:{one == 1n : Nat} -> @+bp:Nat -> @+h5:{Nat.add(1n+bp, 5n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(130n, one) : Nat} -> @+h:List<&2, U32> -> @+hh:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/step.inv(h) == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.freeze(h)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.low(128n, Nat.mod(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(h), 1n+bp)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/final.bend bytes_le @+n:Nat -> @+ds:List<&2, U32> -> @+u:U32 -> @+k:Nat -> @+j:Nat -> @+hj:{Nat.is_le(Nat.add(9n, j), 32n) == True{} : Bool} -> @+hd:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.fit_all(ds, Nat.add(8n, j)) == True{} : Bool} -> @+hu:{0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.fits(Nat.add(8n, j), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.v(u)) == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.bytes(n, ds, u) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.le_bytes(n, Nat.add(Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.v(u), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(ds)), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.pos(n, k))) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/final.bend bytes_le_to @+n:Nat -> @+ds:List<&2, U32> -> @+k:Nat -> @+t:Nat -> @+hb:{0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.bytes(n, ds, 0) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.le_bytes(n, Nat.add(Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.v(0), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(ds)), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.pos(n, k))) : List<&2, U32>} -> @+ht:{Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(ds), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.pos(n, k)) == t : Nat} -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.bytes(n, ds, 0) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.le_bytes(n, t) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/final.bend tag_eq @+one:Nat -> @+h1:{one == 1n : Nat} -> @+bp:Nat -> @+h5:{Nat.add(1n+bp, 5n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(130n, one) : Nat} -> @+h:List<&2, U32> -> @+hh:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/step.inv(h) == True{} : Bool} -> @+s:List<&2, U32> -> @+hs:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.fit_all(s, 8n) == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.bytes(16n, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.add(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.freeze(h), s), 0) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.le_bytes(16n, Nat.add(Nat.mod(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(h), 1n+bp), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(s))) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/final.bend fin_eq @+one:Nat -> @+h1:{one == 1n : Nat} -> @+bp:Nat -> @+h5:{Nat.add(1n+bp, 5n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(130n, one) : Nat} -> @+h:List<&2, U32> -> @+hh:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/step.inv(h) == True{} : Bool} -> @+s:List<&2, U32> -> @+hs:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.fit_all(s, 8n) == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.fin(h, s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.le_bytes(16n, Nat.add(Nat.mod(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(h), 1n+bp), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(s))) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/mac.bend mask_ev @+xs:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/poly1305.mask(xs)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.le_num(xs) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/mac.bend mask_fit @+xs:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.fit_all(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/poly1305.mask(xs), 8n) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/mac.bend mask_len @+xs:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/poly1305.mask(xs)) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(xs) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/mac.bend take_prefix @+n:Nat -> @+xs:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.take(n, xs) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.prefix(n, xs) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/mac.bend skip_suffix @+n:Nat -> @+xs:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.skip(n, xs) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.suffix(n, xs) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/mac.bend cmask @+i:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/poly1305.clamp_mask(i) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.clamp_mask(i) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/mac.bend clamp_eq @+xs:List<&2, U32> -> @+i:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/poly1305.clamp(xs, i) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.clamp_from(xs, i) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/mac.bend clamp_len @+xs:List<&2, U32> -> @+i:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/poly1305.clamp(xs, i)) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(xs) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/mac.bend fit_fit @+n:Nat -> @+xs:List<&2, U32> -> @+h:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.fit_all(xs, 8n) == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.fit_all(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.fit(n, xs), 8n) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/mac.bend take_all @+n:Nat -> @+xs:List<&2, U32> -> @+h:{Nat.is_le(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(xs), n) == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.take(n, xs) == xs : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/mac.bend r_ev @+key:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/poly1305.r_key(key)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.le_num(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.clamp(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.prefix(16n, key))) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/mac.bend s_ev @+key:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/poly1305.s_key(key)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.le_num(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.prefix(16n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.suffix(16n, key))) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/mac.bend app1 @+t:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(List.append(&2, U32, t, [1])) == Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(t), 1n) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/mac.bend pp_eq @+one:Nat -> @+h1:{one == 1n : Nat} -> @+bp:Nat -> @+h5:{Nat.add(1n+bp, 5n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(130n, one) : Nat} -> {Nat.sub(0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(130n, one), 5n) == 1n+bp : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/mac.bend absorb_ok @+one:Nat -> @+h1:{one == 1n : Nat} -> @+bp:Nat -> @+h5:{Nat.add(1n+bp, 5n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(130n, one) : Nat} -> @+fuel:Nat -> @+msg:List<&2, U32> -> @+r:List<&2, U32> -> @+h:List<&2, U32> -> @+a:Nat -> @+hrl:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(r) == 16n : Nat} -> @+hrf:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.fit_all(r, 8n) == True{} : Bool} -> @+hh:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/step.inv(h) == True{} : Bool} -> @+ha:{Nat.mod(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(h), 1n+bp) == a : Nat} -> {Nat.mod(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/poly1305.absorb(fuel, msg, r, h)), 1n+bp) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.absorb(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.blocks(fuel, msg), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(r), a) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/mac.bend absorb_inv @+one:Nat -> @+h1:{one == 1n : Nat} -> @+fuel:Nat -> @+msg:List<&2, U32> -> @+r:List<&2, U32> -> @+h:List<&2, U32> -> @+hrl:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(r) == 16n : Nat} -> @+hrf:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.fit_all(r, 8n) == True{} : Bool} -> @+hh:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/step.inv(h) == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/step.inv(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/poly1305.absorb(fuel, msg, r, h)) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/mac.bend bp5 @+one:Nat -> @+h1:{one == 1n : Nat} -> {Nat.add(1n+bpv(one), 5n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(130n, one) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/mac.bend tag_main @+one:Nat -> @+h1:{one == 1n : Nat} -> @+key:List<&2, U32> -> @+msg:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/poly1305.tag(key, msg) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.poly1305_mac(key, msg) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/mac.bend mac_correct @+key:List<&2, U32> -> @+msg:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/poly1305.mac(key, msg) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.mac(key, msg) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/mac.bend le_bytes_len @+n:Nat -> @+x:Nat -> {List.length(&2, U32, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.le_bytes(n, x)) == n : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/mac.bend mac_length @+key:List<&2, U32> -> @+msg:List<&2, U32> -> {List.length(&2, U32, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.mac(key, msg)) == 16n : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/modp.bend bigp @+one:Nat -> @+h1:{one == 1n : Nat} -> @+bp:Nat -> @+h5:{Nat.add(1n+bp, 5n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(130n, one) : Nat} -> @+x:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(130n, x) == Nat.add(Nat.mul(x, 1n+bp), Nat.mul(x, 5n)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/modp.bend fold_eq @+one:Nat -> @+h1:{one == 1n : Nat} -> @+bp:Nat -> @+h5:{Nat.add(1n+bp, 5n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(130n, one) : Nat} -> @+x:Nat -> {x == Nat.add(Nat.mul(0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.high(130n, x), 1n+bp), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.fold(x)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/modp.bend fold_mod @+one:Nat -> @+h1:{one == 1n : Nat} -> @+bp:Nat -> @+h5:{Nat.add(1n+bp, 5n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(130n, one) : Nat} -> @+x:Nat -> {Nat.mod(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.fold(x), 1n+bp) == Nat.mod(x, 1n+bp) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/modp.bend folds_mod @+one:Nat -> @+h1:{one == 1n : Nat} -> @+bp:Nat -> @+h5:{Nat.add(1n+bp, 5n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(130n, one) : Nat} -> @+n:Nat -> @+x:Nat -> {Nat.mod(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.folds(n, x), 1n+bp) == Nat.mod(x, 1n+bp) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/modp.bend folds_fit @+one:Nat -> @+h1:{one == 1n : Nat} -> @+bp:Nat -> @+h5:{Nat.add(1n+bp, 5n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(130n, one) : Nat} -> @+n:Nat -> @+x:Nat -> @+h:{Nat.is_lt(x, Nat.add(n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(130n, one))) == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.fits(130n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.folds(n, x)) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/modp.bend canon_mod @+one:Nat -> @+h1:{one == 1n : Nat} -> @+bp:Nat -> @+h5:{Nat.add(1n+bp, 5n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(130n, one) : Nat} -> @+y:Nat -> @+hy:{0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.fits(130n, y) == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.canon(y) == Nat.mod(y, 1n+bp) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/modp.bend modp_mod @+one:Nat -> @+h1:{one == 1n : Nat} -> @+bp:Nat -> @+h5:{Nat.add(1n+bp, 5n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(130n, one) : Nat} -> @+x:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.modp(x) == Nat.mod(x, 1n+bp) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/poly.bend step_alg @+r:Nat -> @+a:Nat -> @+n:Nat -> @+x:Nat -> @+p:Nat -> {Nat.add(Nat.mul(Nat.mul(r, Nat.add(a, n)), x), p) == Nat.add(Nat.mul(a, Nat.mul(r, x)), Nat.add(Nat.mul(n, Nat.mul(r, x)), p)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/poly.bend horner_poly @+bs:List<&2, List<&2, U32>> -> @+r:Nat -> @+a:Nat -> {horner(bs, r, a) == Nat.add(Nat.mul(a, Nat.pow(r, len(bs))), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.poly(bs, r)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/poly.bend horner_mod @+bp:Nat -> @+bs:List<&2, List<&2, U32>> -> @+r:Nat -> @+x:Nat -> {Nat.mod(horner(bs, r, Nat.mod(x, 1n+bp)), 1n+bp) == Nat.mod(horner(bs, r, x), 1n+bp) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/poly.bend absorb_horner @+one:Nat -> @+h1:{one == 1n : Nat} -> @+bs:List<&2, List<&2, U32>> -> @+r:Nat -> @+a:Nat -> @+ha:{Nat.is_lt(a, 1n+0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/mac.bpv(one)) == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.absorb(bs, r, a) == Nat.mod(horner(bs, r, a), 1n+0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/mac.bpv(one)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/poly.bend absorb_poly @+one:Nat -> @+h1:{one == 1n : Nat} -> @+bs:List<&2, List<&2, U32>> -> @+r:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.absorb(bs, r, 0n) == Nat.mod(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/poly1305.poly(bs, r), Nat.sub(0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(130n, one), 5n)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/proof.bend step @+acc:U32 -> @+x:U32 -> @+y:U32 -> @+e:Bool -> {Bool.and(U32.is_eq(U32.or(acc, U32.xor(x, y)), 0), e) == Bool.and(U32.is_eq(acc, 0), Bool.and(U32.is_eq(x, y), e)) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/proof.bend fold @+a:List<&2, U32> -> @+b:List<&2, U32> -> @+acc:U32 -> {Bool.and(Nat.is_eq(List.length(&2, U32, a), List.length(&2, U32, b)), U32.is_eq(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/subtle.diff(a, b, acc), 0)) == Bool.and(U32.is_eq(acc, 0), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/subtle.equal(a, b)) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/proof.bend equal_sound @+a:List<&2, U32> -> @+b:List<&2, U32> -> @+h:{0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/subtle.equal(a, b) == True{} : Bool} -> {a == b : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/proof.bend equal_refl @+a:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/subtle.equal(a, a) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/step.bend p5 @+one:Nat -> @+h1:{one == 1n : Nat} -> {Nat.add(pm(one), 5n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(130n, one) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/step.bend big130 @+one:Nat -> @+h1:{one == 1n : Nat} -> @+x:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(130n, x) == Nat.add(Nat.mul(x, pm(one)), Nat.mul(x, 5n)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/step.bend dbound_lt @+one:Nat -> @+h1:{one == 1n : Nat} -> {Nat.is_lt(dbound(one), 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(30n, one)) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/step.bend dbound_fits @+one:Nat -> @+h1:{one == 1n : Nat} -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.fits(32n, dbound(one)) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/step.bend fold_ev @+one:Nat -> @+h1:{one == 1n : Nat} -> @+z:List<&2, U32> -> @+hz:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.le_all(z, s21(one)) == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(z) == Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.fold(z)), Nat.mul(0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(6n, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.skip(17n, z))), pm(one))) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/step.bend fold_fit @+one:Nat -> @+h1:{one == 1n : Nat} -> @+z:List<&2, U32> -> @+hz:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.le_all(z, s21(one)) == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.fit_all(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.fold(z), 30n) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/step.bend fold_len @+z:List<&2, U32> -> @+hl:{Nat.is_le(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(z), 33n) == True{} : Bool} -> {Nat.is_le(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.fold(z)), 17n) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/step.bend q29 @+d:List<&2, U32> -> @+hd:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.fit_all(d, 30n) == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.fits(29n, pv(d)) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/step.bend pass2_ev @+d:List<&2, U32> -> @+hd:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.fit_all(d, 30n) == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.reduce(d)) == Nat.add(Nat.mul(pv(d), 5n), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.split(16n, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.carry(16n, d, 0)))) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/step.bend reduce_ev @+one:Nat -> @+h1:{one == 1n : Nat} -> @+d:List<&2, U32> -> @+hd:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.fit_all(d, 30n) == True{} : Bool} -> @+hl:{Nat.is_le(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(d), 17n) == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(d) == Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.reduce(d)), Nat.mul(pv(d), pm(one))) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/step.bend reduce_top @+one:Nat -> @+h1:{one == 1n : Nat} -> @+d:List<&2, U32> -> @+hd:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.fit_all(d, 30n) == True{} : Bool} -> {Nat.is_le(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.v(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.hd0(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.skip(16n, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.reduce(d)))), 4n) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/step.bend reduce_inv @+one:Nat -> @+h1:{one == 1n : Nat} -> @+d:List<&2, U32> -> @+hd:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.fit_all(d, 30n) == True{} : Bool} -> {inv(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.reduce(d)) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/step.bend z_le @+one:Nat -> @+h1:{one == 1n : Nat} -> @+r:List<&2, U32> -> @+h:List<&2, U32> -> @+c:List<&2, U32> -> @+hh:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.fit_all(h, 8n) == True{} : Bool} -> @+hcf:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.fit_all(c, 8n) == True{} : Bool} -> @+hrl:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(r) == 16n : Nat} -> @+hrf:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.fit_all(r, 8n) == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.le_all(zz(r, h, c), s21(one)) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/step.bend z_ev @+one:Nat -> @+h1:{one == 1n : Nat} -> @+r:List<&2, U32> -> @+h:List<&2, U32> -> @+c:List<&2, U32> -> @+hh:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.fit_all(h, 8n) == True{} : Bool} -> @+hcf:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.fit_all(c, 8n) == True{} : Bool} -> @+hrl:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(r) == 16n : Nat} -> @+hrf:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.fit_all(r, 8n) == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(zz(r, h, c)) == Nat.mul(Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(h), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(c)), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(r)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/step.bend z_len @+r:List<&2, U32> -> @+h:List<&2, U32> -> @+c:List<&2, U32> -> @+hhl:{Nat.is_le(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(h), 17n) == True{} : Bool} -> @+hcl:{Nat.is_le(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(c), 17n) == True{} : Bool} -> @+hrl:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(r) == 16n : Nat} -> {Nat.is_le(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(zz(r, h, c)), 33n) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/step.bend block_ev @+one:Nat -> @+h1:{one == 1n : Nat} -> @+r:List<&2, U32> -> @+h:List<&2, U32> -> @+c:List<&2, U32> -> @+hh:{inv(h) == True{} : Bool} -> @+hcl:{Nat.is_le(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(c), 17n) == True{} : Bool} -> @+hcf:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.fit_all(c, 8n) == True{} : Bool} -> @+hrl:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(r) == 16n : Nat} -> @+hrf:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.fit_all(r, 8n) == True{} : Bool} -> {Nat.mul(Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(h), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(c)), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(r)) == Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.ev(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.block(r, h, c)), Nat.mul(bk(r, h, c), pm(one))) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/step.bend block_inv @+one:Nat -> @+h1:{one == 1n : Nat} -> @+r:List<&2, U32> -> @+h:List<&2, U32> -> @+c:List<&2, U32> -> @+hh:{inv(h) == True{} : Bool} -> @+hcf:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.fit_all(c, 8n) == True{} : Bool} -> @+hrl:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.len(r) == 16n : Nat} -> @+hrf:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/poly1305/value.fit_all(r, 8n) == True{} : Bool} -> {inv(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.block(r, h, c)) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend le_mono @+xs:List<&2, U32> -> @+b:Nat -> @+c:Nat -> @+hb:{Nat.is_le(b, c) == True{} : Bool} -> @+h:{le_all(xs, b) == True{} : Bool} -> {le_all(xs, c) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend add_ev @+a:List<&2, U32> -> @+b:List<&2, U32> -> @+b1:Nat -> @+b2:Nat -> @+ha:{le_all(a, b1) == True{} : Bool} -> @+hb:{le_all(b, b2) == True{} : Bool} -> @+hf:{0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.fits(32n, Nat.add(b1, b2)) == True{} : Bool} -> {ev(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.add(a, b)) == Nat.add(ev(a), ev(b)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend add_le @+a:List<&2, U32> -> @+b:List<&2, U32> -> @+b1:Nat -> @+b2:Nat -> @+ha:{le_all(a, b1) == True{} : Bool} -> @+hb:{le_all(b, b2) == True{} : Bool} -> @+hf:{0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.fits(32n, Nat.add(b1, b2)) == True{} : Bool} -> {le_all(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.add(a, b), Nat.add(b1, b2)) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend scale_ev @+c:U32 -> @+a:List<&2, U32> -> @+b:Nat -> @+bc:Nat -> @+ha:{le_all(a, b) == True{} : Bool} -> @+hc:{Nat.is_le(v(c), bc) == True{} : Bool} -> @+hf:{0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.fits(32n, Nat.mul(b, bc)) == True{} : Bool} -> {ev(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.scale(c, a)) == Nat.mul(ev(a), v(c)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend scale_le @+c:U32 -> @+a:List<&2, U32> -> @+b:Nat -> @+bc:Nat -> @+ha:{le_all(a, b) == True{} : Bool} -> @+hc:{Nat.is_le(v(c), bc) == True{} : Bool} -> @+hf:{0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.fits(32n, Nat.mul(b, bc)) == True{} : Bool} -> {le_all(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.scale(c, a), Nat.mul(b, bc)) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend mul_le @+x:List<&2, U32> -> @+r:List<&2, U32> -> @+bx:Nat -> @+br:Nat -> @+hx:{le_all(x, bx) == True{} : Bool} -> @+hr:{le_all(r, br) == True{} : Bool} -> @+hf:{0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.fits(32n, Nat.mul(List.length(&2, U32, r), Nat.mul(bx, br))) == True{} : Bool} -> {le_all(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.mul(x, r), Nat.mul(List.length(&2, U32, r), Nat.mul(bx, br))) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend mul_ev @+x:List<&2, U32> -> @+r:List<&2, U32> -> @+bx:Nat -> @+br:Nat -> @+hx:{le_all(x, bx) == True{} : Bool} -> @+hr:{le_all(r, br) == True{} : Bool} -> @+hf:{0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.fits(32n, Nat.mul(List.length(&2, U32, r), Nat.mul(bx, br))) == True{} : Bool} -> {ev(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.mul(x, r)) == Nat.mul(ev(x), ev(r)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend pos_zero @+n:Nat -> {pos(n, 0n) == 0n : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend pos_add @+n:Nat -> @+x:Nat -> @+y:Nat -> {pos(n, Nat.add(x, y)) == Nat.add(pos(n, x), pos(n, y)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend skip_nil @+n:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.skip(n, []) == [] : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend ts_ev @+n:Nat -> @+xs:List<&2, U32> -> {ev(xs) == Nat.add(ev(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.take(n, xs)), pos(n, ev(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.skip(n, xs)))) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend take_nil_ev @+n:Nat -> {ev(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.take(n, [])) == 0n : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend fit_ev @+n:Nat -> @+xs:List<&2, U32> -> {ev(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.fit(n, xs)) == ev(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.take(n, xs)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend fits_zero @+k:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.fits(k, 0n) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend carry_ev @+n:Nat -> @+ds:List<&2, U32> -> @+u:U32 -> @+j:Nat -> @+hj:{Nat.is_le(Nat.add(9n, j), 32n) == True{} : Bool} -> @+hd:{fit_all(ds, Nat.add(8n, j)) == True{} : Bool} -> @+hu:{0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.fits(Nat.add(8n, j), v(u)) == True{} : Bool} -> {Nat.add(ev(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.carry(n, ds, u)), pos(1n+n, ev(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.skip(1n+n, ds)))) == Nat.add(v(u), ev(ds)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend carry_lo @+n:Nat -> @+ds:List<&2, U32> -> @+u:U32 -> {fit_all(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.take(n, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.carry(n, ds, u)), 8n) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend carry_top @+n:Nat -> @+ds:List<&2, U32> -> @+u:U32 -> @+j:Nat -> @+hj:{Nat.is_le(Nat.add(9n, j), 32n) == True{} : Bool} -> @+hd:{fit_all(ds, Nat.add(8n, j)) == True{} : Bool} -> @+hu:{0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.fits(Nat.add(8n, j), v(u)) == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.fits(Nat.add(9n, j), v(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.hd0(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.skip(n, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.carry(n, ds, u))))) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend carry_len @+n:Nat -> @+ds:List<&2, U32> -> @+u:U32 -> {List.length(&2, U32, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.carry(n, ds, u)) == 1n+n : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend sq_ev @+n:Nat -> @+xs:List<&2, U32> -> {Nat.add(Nat.add(ev(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.split(n, xs)), pos(n, 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(2n, v(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.quot(n, xs))))), pos(1n+n, ev(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.skip(1n+n, xs)))) == ev(xs) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend len_add @+a:List<&2, U32> -> @+b:List<&2, U32> -> @+n:Nat -> @+ha:{Nat.is_le(len(a), n) == True{} : Bool} -> @+hb:{Nat.is_le(len(b), n) == True{} : Bool} -> {Nat.is_le(len(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.add(a, b)), n) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend len_scale @+c:U32 -> @+a:List<&2, U32> -> {len(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.scale(c, a)) == len(a) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend len_mul @+x:List<&2, U32> -> @+r:List<&2, U32> -> @+n:Nat -> @+hx:{Nat.is_le(len(x), n) == True{} : Bool} -> {Nat.is_le(len(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.mul(x, r)), Nat.add(len(r), n)) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend len_take @+n:Nat -> @+xs:List<&2, U32> -> {Nat.is_le(len(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.take(n, xs)), n) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend len_skip @+n:Nat -> @+xs:List<&2, U32> -> @+b:Nat -> @+h:{Nat.is_le(len(xs), Nat.add(n, b)) == True{} : Bool} -> {Nat.is_le(len(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.skip(n, xs)), b) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend skip_long @+n:Nat -> @+xs:List<&2, U32> -> @+h:{Nat.is_le(len(xs), n) == True{} : Bool} -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.skip(n, xs) == [] : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend le_take @+n:Nat -> @+xs:List<&2, U32> -> @+b:Nat -> @+h:{le_all(xs, b) == True{} : Bool} -> {le_all(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.take(n, xs), b) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend le_skip @+n:Nat -> @+xs:List<&2, U32> -> @+b:Nat -> @+h:{le_all(xs, b) == True{} : Bool} -> {le_all(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.skip(n, xs), b) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend fit_le @+xs:List<&2, U32> -> @+k:Nat -> @+one:Nat -> @+h1:{one == 1n : Nat} -> @+h:{fit_all(xs, k) == True{} : Bool} -> {le_all(xs, 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(k, one)) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend le_fit @+xs:List<&2, U32> -> @+b:Nat -> @+k:Nat -> @+one:Nat -> @+h1:{one == 1n : Nat} -> @+hb:{Nat.is_lt(b, 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.shift(k, one)) == True{} : Bool} -> @+h:{le_all(xs, b) == True{} : Bool} -> {fit_all(xs, k) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend fit_mono @+xs:List<&2, U32> -> @+a:Nat -> @+b:Nat -> @+hab:{Nat.is_le(a, b) == True{} : Bool} -> @+h:{fit_all(xs, a) == True{} : Bool} -> {fit_all(xs, b) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend fit_take @+n:Nat -> @+xs:List<&2, U32> -> @+k:Nat -> @+h:{fit_all(xs, k) == True{} : Bool} -> {fit_all(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.take(n, xs), k) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend ev_lt @+xs:List<&2, U32> -> @+one:Nat -> @+h1:{one == 1n : Nat} -> @+h:{fit_all(xs, 8n) == True{} : Bool} -> {Nat.is_lt(ev(xs), pos(len(xs), one)) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend fit_take_nil @+n:Nat -> @+k:Nat -> {fit_all(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.take(n, []), k) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend split_fit @+n:Nat -> @+xs:List<&2, U32> -> @+h:{fit_all(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.take(n, xs), 8n) == True{} : Bool} -> {fit_all(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.split(n, xs), 8n) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend fit_split @+n:Nat -> @+xs:List<&2, U32> -> @+k:Nat -> @+h1:{fit_all(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.take(n, xs), k) == True{} : Bool} -> @+h2:{fit_all(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.skip(n, xs), k) == True{} : Bool} -> {fit_all(xs, k) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend quot_top @+n:Nat -> @+xs:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.quot(n, xs) == U32.shrn(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.hd0(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.skip(n, xs)), 2n) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/poly1305/value.bend ev_one @+xs:List<&2, U32> -> @+h:{Nat.is_le(len(xs), 1n) == True{} : Bool} -> {ev(xs) == v(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/poly1305/limbs.hd0(xs)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend octets_correct @+width:Nat -> @+n:Nat -> @+acc:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.length_octets(width, n, acc) == List.append(&2, U32, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.octets(width, n), acc) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend length_correct @+n:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.bit_length(n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.length_field(n) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend nth_correct @xs:List<&2, U32> -> @n:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.get(xs, n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.nth(xs, n) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend next_correct @+hs:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.next_word(hs) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.recurrence(hs) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend extension_correct @+n:Nat -> @+hs:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.expand(n, hs) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.extension(n, hs) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend schedule_correct @+extra:Nat -> @+block:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.schedule(extra, block) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.schedule(extra, block) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend step_correct @s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @k:U32 -> @w:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.step(s, k, w) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.step(s, k, w) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend rounds_correct @+ks:List<&2, U32> -> @+ws:List<&2, U32> -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.rounds(ks, ws, s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.rounds(ks, ws, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend feedforward_correct @x:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @y:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.feedforward(x, y) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.feedforward(x, y) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend compression_correct @+ws:List<&2, U32> -> @+ks:List<&2, U32> -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.compress(ws, ks, s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.compress(ws, ks, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend expanded_rounds_correct @+n:Nat -> @+history:List<&2, U32> -> @+ks:List<&2, U32> -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.expanded_rounds(n, history, ks, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.rounds(ks, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.expand(n, history), s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend schedule_rounds_correct @+ws:List<&2, U32> -> @+extra:Nat -> @+history:List<&2, U32> -> @+ks:List<&2, U32> -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.schedule_rounds(ws, extra, history, ks, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.rounds(ks, List.append(&2, U32, ws, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.expand(extra, history)), s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend fused_compress_correct @+block:List<&2, U32> -> @+extra:Nat -> @+ks:List<&2, U32> -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.fused_compress(block, extra, ks, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.compress(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.schedule(extra, block), ks, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend fused_compress_slow_correct @+block:List<&2, U32> -> @+extra:Nat -> @+ks:List<&2, U32> -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.fused_compress_slow(block, extra, ks, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.compress(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.schedule(extra, block), ks, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend window_rounds_correct @+q:Nat -> @+a:U32 -> @+b:U32 -> @+c:U32 -> @+d:U32 -> @+e:U32 -> @+f:U32 -> @+g:U32 -> @+h:U32 -> @+i:U32 -> @+j:U32 -> @+k:U32 -> @+l:U32 -> @+m:U32 -> @+n:U32 -> @+o:U32 -> @+p:U32 -> @+rest:List<&2, U32> -> @+ks:List<&2, U32> -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p}, ks, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.expanded_rounds(q, a <> b <> c <> d <> e <> f <> g <> h <> i <> j <> k <> l <> m <> n <> o <> p <> rest, ks, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend window_schedule_rounds_correct @+ws:List<&2, U32> -> @+extra:Nat -> @+a:U32 -> @+b:U32 -> @+c:U32 -> @+d:U32 -> @+e:U32 -> @+f:U32 -> @+g:U32 -> @+h:U32 -> @+i:U32 -> @+j:U32 -> @+k:U32 -> @+l:U32 -> @+m:U32 -> @+n:U32 -> @+o:U32 -> @+p:U32 -> @+rest:List<&2, U32> -> @+ks:List<&2, U32> -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_schedule_rounds(ws, extra, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p}, ks, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.schedule_rounds(ws, extra, a <> b <> c <> d <> e <> f <> g <> h <> i <> j <> k <> l <> m <> n <> o <> p <> rest, ks, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend window_compress16_correct @+a:U32 -> @+b:U32 -> @+c:U32 -> @+d:U32 -> @+e:U32 -> @+f:U32 -> @+g:U32 -> @+h:U32 -> @+i:U32 -> @+j:U32 -> @+k:U32 -> @+l:U32 -> @+m:U32 -> @+n:U32 -> @+o:U32 -> @+p:U32 -> @+extra:Nat -> @+ks:List<&2, U32> -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_compress16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, extra, ks, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.fused_compress([a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p], extra, ks, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend digest_correct @s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.digest(s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.digest(s) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend block_bytes_correct @+bytes:List<&2, U32> -> @+extra:Nat -> @+ks:List<&2, U32> -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.block_bytes(bytes, extra, ks, s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.blocks(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.schedules(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.words(bytes), extra), ks, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend suffix_correct @+n:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.suffix(n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.padding_suffix(n) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend mod_quotient @+x:Nat -> @+m:Nat -> @+d:Nat -> @+e:Nat -> @+r:Nat -> {Pair.snd(Nat, Nat, Nat.divmod.go(x, m, d, r)) == Pair.snd(Nat, Nat, Nat.divmod.go(x, m, e, r)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend mod_shift @+x:Nat -> {Nat.mod(Nat.add(64n, x), 64n) == Nat.mod(x, 64n) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend mod_tail @+x:Nat -> @+k:Nat -> {Nat.mod(Nat.add(x, mul64(k)), 64n) == Nat.mod(x, 64n) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr64_correct @+q:Nat -> @+win:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.ShaWindow -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr64(q, win, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, win, [], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr63_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr63(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr62_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr62(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr61_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr61(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr60_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr60(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr59_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr59(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr58_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr58(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr57_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr57(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr56_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr56(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr55_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr55(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr54_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr54(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr53_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr53(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr52_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr52(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr51_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr51(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr50_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr50(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr49_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr49(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr48_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr48(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr47_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr47(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr46_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr46(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr45_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr45(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr44_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr44(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr43_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr43(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr42_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr42(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr41_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr41(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr40_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr40(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr39_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr39(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr38_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr38(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr37_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr37(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr36_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr36(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr35_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr35(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr34_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr34(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr33_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr33(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr32_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr32(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr31_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr31(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr30_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr30(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr29_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr29(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr28_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr28(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr27_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr27(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr26_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr26(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr25_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr25(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr24_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr24(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr23_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr23(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr22_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr22(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr21_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr21(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr20_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr20(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr19_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr19(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr18_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr18(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr17_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr17(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend kr16_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.kr16(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend fips16_correct @+a:U32 -> @+b:U32 -> @+c:U32 -> @+d:U32 -> @+e:U32 -> @+f:U32 -> @+g:U32 -> @+h:U32 -> @+i:U32 -> @+j:U32 -> @+k:U32 -> @+l:U32 -> @+m:U32 -> @+n:U32 -> @+o:U32 -> @+p:U32 -> @+q:Nat -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.fips_compress16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.window_compress16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.round_constants, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend stream_correct @+bytes:List<&2, U32> -> @+k:Nat -> @+extra:Nat -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.stream(bytes, mul64(k), extra, s) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.block_bytes(List.append(&2, U32, bytes, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.suffix(Nat.add(List.length(&2, U32, bytes), mul64(k)))), extra, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.round_constants, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/conformance.bend sha256_correct @+bytes:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.sha256(bytes) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.hash(bytes, 48n, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/core.round_constants) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/correctness.bend digest_octets_length @s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {List.length(&2, U32, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.digest_octets(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.digest(s))) == 32n : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/list_proofs.bend append_assoc @-A:Data -> @xs:List<&2, A> -> @ys:List<&2, A> -> @zs:List<&2, A> -> {List.append(&2, A, List.append(&2, A, xs, ys), zs) == List.append(&2, A, xs, List.append(&2, A, ys, zs)) : List<&2, A>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/list_proofs.bend reverse_twice @-A:Data -> @xs:List<&2, A> -> @acc:List<&2, A> -> @ys:List<&2, A> -> {List.reverse.go(&2, A, List.reverse.go(&2, A, xs, acc), ys) == List.reverse.go(&2, A, acc, List.append(&2, A, xs, ys)) : List<&2, A>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/list_proofs.bend reverse_append @-A:Data -> @xs:List<&2, A> -> @ys:List<&2, A> -> {List.reverse.go(&2, A, List.reverse(&2, A, xs), ys) == List.append(&2, A, xs, ys) : List<&2, A>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/list_proofs.bend add_succ @n:Nat -> @m:Nat -> {Nat.add(n, 1n+m) == 1n+Nat.add(n, m) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/list_proofs.bend add_zero @n:Nat -> {Nat.add(n, 0n) == n : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/list_proofs.bend append_assoc_reverse @-A:Data -> @+xs:List<&2, A> -> @+ys:List<&2, A> -> @+zs:List<&2, A> -> {List.append(&2, A, xs, List.append(&2, A, ys, zs)) == List.append(&2, A, List.append(&2, A, xs, ys), zs) : List<&2, A>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/list_proofs.bend add_swap @+n:Nat -> @+k:Nat -> @+m:Nat -> {Nat.add(n, Nat.add(k, m)) == Nat.add(k, Nat.add(n, m)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/buffer_proof.bend correct @a:Array -> @+length:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/sha256.sha256(a, length) == 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/buffer.result(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.hash(a, length)) : Maybe<&1, Array>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/buffer_proof.bend digest_size @s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {Pair.snd(Array, U32, Array.size(U32, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/buffer.digest(s))) == 8 : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/buffer_proof.bend digest_words @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {words(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/buffer.digest(s)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.digest(s) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/buffer_proof.bend observe_digest @+r:Maybe<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State> -> {observe(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/buffer.result(r)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.digest_result(r) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/buffer_proof.bend full_reified @-a:Array -> @+length:Nat -> @view:Sigma<&2, &1, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/packed_array_proof.Tree, t => {a == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/packed_array_proof.thaw(t) : Array}> -> {observe(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/sha256.sha256(a, length)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.sha256(a, length) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/buffer_proof.bend full_correct @a:Array -> @+length:Nat -> {observe(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/sha256.sha256(a, length)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.sha256(a, length) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend octets_correct @+width:Nat -> @+n:Nat -> @+acc:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.length_octets(width, n, acc) == List.append(&2, U32, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.octets(width, n), acc) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend length_correct @+n:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.bit_length(n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.length_field(n) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend nth_correct @xs:List<&2, U32> -> @n:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.get(xs, n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.nth(xs, n) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend next_correct @+hs:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.next_word(hs) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.recurrence(hs) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend extension_correct @+n:Nat -> @+hs:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.expand(n, hs) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.extension(n, hs) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend schedule_correct @+extra:Nat -> @+block:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.schedule(extra, block) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.schedule(extra, block) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend step_correct @s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @k:U32 -> @w:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.step(s, k, w) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.step(s, k, w) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend rounds_correct @+ks:List<&2, U32> -> @+ws:List<&2, U32> -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.rounds(ks, ws, s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.rounds(ks, ws, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend feedforward_correct @x:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @y:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.feedforward(x, y) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.feedforward(x, y) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend compression_correct @+ws:List<&2, U32> -> @+ks:List<&2, U32> -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.compress(ws, ks, s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.compress(ws, ks, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend expanded_rounds_correct @+n:Nat -> @+history:List<&2, U32> -> @+ks:List<&2, U32> -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.expanded_rounds(n, history, ks, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.rounds(ks, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.expand(n, history), s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend schedule_rounds_correct @+ws:List<&2, U32> -> @+extra:Nat -> @+history:List<&2, U32> -> @+ks:List<&2, U32> -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.schedule_rounds(ws, extra, history, ks, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.rounds(ks, List.append(&2, U32, ws, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.expand(extra, history)), s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend fused_compress_correct @+block:List<&2, U32> -> @+extra:Nat -> @+ks:List<&2, U32> -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.fused_compress(block, extra, ks, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.compress(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.schedule(extra, block), ks, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend fused_compress_slow_correct @+block:List<&2, U32> -> @+extra:Nat -> @+ks:List<&2, U32> -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.fused_compress_slow(block, extra, ks, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.compress(0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.schedule(extra, block), ks, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend window_rounds_correct @+q:Nat -> @+a:U32 -> @+b:U32 -> @+c:U32 -> @+d:U32 -> @+e:U32 -> @+f:U32 -> @+g:U32 -> @+h:U32 -> @+i:U32 -> @+j:U32 -> @+k:U32 -> @+l:U32 -> @+m:U32 -> @+n:U32 -> @+o:U32 -> @+p:U32 -> @+rest:List<&2, U32> -> @+ks:List<&2, U32> -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p}, ks, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.expanded_rounds(q, a <> b <> c <> d <> e <> f <> g <> h <> i <> j <> k <> l <> m <> n <> o <> p <> rest, ks, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend window_schedule_rounds_correct @+ws:List<&2, U32> -> @+extra:Nat -> @+a:U32 -> @+b:U32 -> @+c:U32 -> @+d:U32 -> @+e:U32 -> @+f:U32 -> @+g:U32 -> @+h:U32 -> @+i:U32 -> @+j:U32 -> @+k:U32 -> @+l:U32 -> @+m:U32 -> @+n:U32 -> @+o:U32 -> @+p:U32 -> @+rest:List<&2, U32> -> @+ks:List<&2, U32> -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_schedule_rounds(ws, extra, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p}, ks, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.schedule_rounds(ws, extra, a <> b <> c <> d <> e <> f <> g <> h <> i <> j <> k <> l <> m <> n <> o <> p <> rest, ks, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend window_compress16_correct @+a:U32 -> @+b:U32 -> @+c:U32 -> @+d:U32 -> @+e:U32 -> @+f:U32 -> @+g:U32 -> @+h:U32 -> @+i:U32 -> @+j:U32 -> @+k:U32 -> @+l:U32 -> @+m:U32 -> @+n:U32 -> @+o:U32 -> @+p:U32 -> @+extra:Nat -> @+ks:List<&2, U32> -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_compress16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, extra, ks, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.fused_compress([a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p], extra, ks, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend digest_correct @s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.digest(s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.digest(s) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend block_bytes_correct @+bytes:List<&2, U32> -> @+extra:Nat -> @+ks:List<&2, U32> -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.block_bytes(bytes, extra, ks, s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.blocks(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.schedules(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.words(bytes), extra), ks, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend suffix_correct @+n:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.suffix(n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.padding_suffix(n) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend mod_quotient @+x:Nat -> @+m:Nat -> @+d:Nat -> @+e:Nat -> @+r:Nat -> {Pair.snd(Nat, Nat, Nat.divmod.go(x, m, d, r)) == Pair.snd(Nat, Nat, Nat.divmod.go(x, m, e, r)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend mod_shift @+x:Nat -> {Nat.mod(Nat.add(64n, x), 64n) == Nat.mod(x, 64n) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend mod_tail @+x:Nat -> @+k:Nat -> {Nat.mod(Nat.add(x, mul64(k)), 64n) == Nat.mod(x, 64n) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr64_correct @+q:Nat -> @+win:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.ShaWindow -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr64(q, win, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, win, [], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr63_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr63(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr62_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr62(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr61_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr61(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr60_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr60(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr59_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr59(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr58_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr58(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr57_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr57(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr56_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr56(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr55_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr55(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr54_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr54(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr53_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr53(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr52_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr52(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr51_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr51(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr50_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr50(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr49_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr49(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr48_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr48(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr47_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr47(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr46_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr46(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr45_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr45(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr44_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr44(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr43_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr43(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr42_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr42(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr41_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr41(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr40_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr40(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr39_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr39(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr38_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr38(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr37_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr37(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr36_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr36(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr35_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr35(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr34_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr34(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr33_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr33(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr32_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr32(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr31_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr31(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr30_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr30(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr29_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr29(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr28_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr28(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr27_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr27(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr26_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr26(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr25_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr25(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr24_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr24(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr23_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr23(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr22_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr22(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr21_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr21(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr20_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr20(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr19_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr19(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr18_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr18(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr17_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr17(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend kr16_correct @+q:Nat -> @+x0:U32 -> @+x1:U32 -> @+x2:U32 -> @+x3:U32 -> @+x4:U32 -> @+x5:U32 -> @+x6:U32 -> @+x7:U32 -> @+x8:U32 -> @+x9:U32 -> @+x10:U32 -> @+x11:U32 -> @+x12:U32 -> @+x13:U32 -> @+x14:U32 -> @+x15:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.kr16(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.W{x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15}, [3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend fips16_correct @+a:U32 -> @+b:U32 -> @+c:U32 -> @+d:U32 -> @+e:U32 -> @+f:U32 -> @+g:U32 -> @+h:U32 -> @+i:U32 -> @+j:U32 -> @+k:U32 -> @+l:U32 -> @+m:U32 -> @+n:U32 -> @+o:U32 -> @+p:U32 -> @+q:Nat -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.fips_compress16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.window_compress16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.round_constants, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend stream_correct @+bytes:List<&2, U32> -> @+k:Nat -> @+extra:Nat -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.stream(bytes, mul64(k), extra, s) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.block_bytes(List.append(&2, U32, bytes, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.suffix(Nat.add(List.length(&2, U32, bytes), mul64(k)))), extra, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.round_constants, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/conformance.bend sha256_correct @+bytes:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.sha256(bytes) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.hash(bytes, 48n, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/core_model.round_constants) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_array_proof.bend reify @a:Array -> Sigma<&2, &1, Tree, t => {a == thaw(t) : Array}> bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_array_proof.bend reify_node @-l:Array -> @-r:Array -> @left:Sigma<&2, &1, Tree, t => {l == thaw(t) : Array}> -> @right:Sigma<&2, &1, Tree, t => {r == thaw(t) : Array}> -> Sigma<&2, &1, Tree, t => {ANode{l, r} == thaw(t) : Array}> bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend compress_correct @+a:U32 -> @+b:U32 -> @+c:U32 -> @+d:U32 -> @+e:U32 -> @+f:U32 -> @+g:U32 -> @+h:U32 -> @+i:U32 -> @+j:U32 -> @+k:U32 -> @+l:U32 -> @+m:U32 -> @+n:U32 -> @+o:U32 -> @+p:U32 -> @+extra:Nat -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.fips_compress16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, extra, s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.compress([a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p], extra, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend read16_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.read16(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 0n, index, False{}, 0n, 0n, s, [w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend read15_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.read15(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 1n, index, False{}, 0n, 0n, s, [w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend read14_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.read14(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 2n, index, False{}, 0n, 0n, s, [w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend read13_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.read13(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 3n, index, False{}, 0n, 0n, s, [w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend read12_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.read12(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 4n, index, False{}, 0n, 0n, s, [w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend read11_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.read11(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 5n, index, False{}, 0n, 0n, s, [w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend read10_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.read10(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, w8, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 6n, index, False{}, 0n, 0n, s, [w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend read9_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.read9(extra, index, s, w0, w1, w2, w3, w4, w5, w6, w7, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 7n, index, False{}, 0n, 0n, s, [w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend read8_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.read8(extra, index, s, w0, w1, w2, w3, w4, w5, w6, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 8n, index, False{}, 0n, 0n, s, [w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend read7_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.read7(extra, index, s, w0, w1, w2, w3, w4, w5, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 9n, index, False{}, 0n, 0n, s, [w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend read6_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.read6(extra, index, s, w0, w1, w2, w3, w4, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 10n, index, False{}, 0n, 0n, s, [w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend read5_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.read5(extra, index, s, w0, w1, w2, w3, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 11n, index, False{}, 0n, 0n, s, [w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend read4_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.read4(extra, index, s, w0, w1, w2, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 12n, index, False{}, 0n, 0n, s, [w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend read3_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+w0:U32 -> @+w1:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.read3(extra, index, s, w0, w1, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 13n, index, False{}, 0n, 0n, s, [w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend read2_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+w0:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.read2(extra, index, s, w0, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 14n, index, False{}, 0n, 0n, s, [w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend read1_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.read1(extra, index, s, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 15n, index, False{}, 0n, 0n, s, [], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend partial_correct @+w:U32 -> @+delta:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.partial(w, delta) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.partial(w, delta) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend pad_choose_correct @+c:Cmp -> @+w:U32 -> @+delta:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad_choose(c, w, delta) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.pad_choose(c, w, delta) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend pad_word_correct @+w:U32 -> @+pos:Nat -> @+remain:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad_word(w, pos, remain) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.pad_word(w, pos, remain) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend tail_word_correct @+short:Bool -> @+w:U32 -> @+pos:Nat -> @+remain:Nat -> @+length:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.length_word(short, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad_word(w, pos, remain), length) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.length_word(short, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.pad_word(w, pos, remain), length) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend padded_words_correct @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @+w15:U32 -> @+remain:Nat -> @+total:Nat -> {[0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad_word(w0, 0n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad_word(w1, 4n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad_word(w2, 8n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad_word(w3, 12n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad_word(w4, 16n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad_word(w5, 20n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad_word(w6, 24n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad_word(w7, 28n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad_word(w8, 32n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad_word(w9, 36n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad_word(w10, 40n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad_word(w11, 44n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad_word(w12, 48n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad_word(w13, 52n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.length_word(Nat.is_lt(remain, 56n), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad_word(w14, 56n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.len_hi(total)), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.length_word(Nat.is_lt(remain, 56n), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad_word(w15, 60n, remain), 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/core.len_lo(total))] == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.padded_words([w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15], 0n, remain, total) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend pad16_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @+w14:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad16(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 0n, index, True{}, remain, total, s, [w14, w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend pad15_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @+w13:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad15(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 1n, index, True{}, remain, total, s, [w13, w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend pad14_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @+w12:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad14(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 2n, index, True{}, remain, total, s, [w12, w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend pad13_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @+w11:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad13(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 3n, index, True{}, remain, total, s, [w11, w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend pad12_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @+w10:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad12(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 4n, index, True{}, remain, total, s, [w10, w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend pad11_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @+w9:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad11(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 5n, index, True{}, remain, total, s, [w9, w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend pad10_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @+w8:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad10(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, w8, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 6n, index, True{}, remain, total, s, [w8, w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend pad9_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @+w7:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad9(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, w7, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 7n, index, True{}, remain, total, s, [w7, w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend pad8_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @+w6:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad8(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, w6, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 8n, index, True{}, remain, total, s, [w6, w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend pad7_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @+w5:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad7(extra, index, s, remain, total, w0, w1, w2, w3, w4, w5, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 9n, index, True{}, remain, total, s, [w5, w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend pad6_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @+w4:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad6(extra, index, s, remain, total, w0, w1, w2, w3, w4, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 10n, index, True{}, remain, total, s, [w4, w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend pad5_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @+w3:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad5(extra, index, s, remain, total, w0, w1, w2, w3, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 11n, index, True{}, remain, total, s, [w3, w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend pad4_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @+w2:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad4(extra, index, s, remain, total, w0, w1, w2, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 12n, index, True{}, remain, total, s, [w2, w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend pad3_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @+w1:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad3(extra, index, s, remain, total, w0, w1, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 13n, index, True{}, remain, total, s, [w1, w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend pad2_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @+w0:U32 -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad2(extra, index, s, remain, total, w0, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 14n, index, True{}, remain, total, s, [w0], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend pad1_correct @+extra:Nat -> @+index:U32 -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @+remain:Nat -> @+total:Nat -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.pad1(extra, index, s, remain, total, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.gather(extra, 15n, index, True{}, remain, total, s, [], pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend final_extra_correct @+extra:Nat -> @+more:Bool -> @+total:Nat -> @pair:Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.final_extra(extra, more, total, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.final_extra(extra, more, total, pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend blocks_correct @+extra:Nat -> @+n:Nat -> @+index:U32 -> @+remain:Nat -> @+total:Nat -> @pair:Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.blocks(extra, n, index, remain, total, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.blocks(extra, n, index, remain, total, pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend blocks_zero_reified @+extra:Nat -> @+index:U32 -> @+remain:Nat -> @+total:Nat -> @-a:Array -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @view:Sigma<&2, &1, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/packed_array_proof.Tree, t => {a == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/packed_array_proof.thaw(t) : Array}> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.blocks(extra, 0n, index, remain, total, (a, s)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.blocks(extra, 0n, index, remain, total, (a, s)) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend blocks_step_reified @+p:Nat -> @+extra:Nat -> @+index:U32 -> @+remain:Nat -> @+total:Nat -> @-a:Array -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> @view:Sigma<&2, &1, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/packed_array_proof.Tree, t => {a == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/packed_array_proof.thaw(t) : Array}> -> @recurse:(@pair:Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.blocks(extra, p, U32.add(index, 16), remain, total, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.blocks(extra, p, U32.add(index, 16), remain, total, pair) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)}) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.blocks(extra, 1n+p, index, remain, total, (a, s)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.blocks(extra, 1n+p, index, remain, total, (a, s)) : Pair(Array, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend hash_unchecked_correct @a:Array -> @+length:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.hash_unchecked(a, length) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.hash_unchecked(a, length) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend checked_correct @+valid:Bool -> @a:Array -> @+length:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.checked(valid, a, length) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.checked(valid, a, length) : Maybe<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend sized_correct @+length:Nat -> @pair:Pair(Array, U32) -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.sized(length, pair) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.sized(length, pair) : Maybe<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend hash_correct @a:Array -> @+length:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/packed/packed.hash(a, length) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.hash(a, length) : Maybe<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend digest_result_correct @+r:Maybe<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State> -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/legacy_model.packed_digest(r) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.digest_result(r) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend sha256_correct @a:Array -> @+length:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/legacy_model.sha256_packed(a, length) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.sha256(a, length) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/packed_proof.bend sha256_reified @-a:Array -> @+length:Nat -> @view:Sigma<&2, &1, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/packed_array_proof.Tree, t => {a == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/packed_array_proof.thaw(t) : Array}> -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/crypto/sha/packed/legacy_model.sha256_packed(a, length) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha/packed.sha256(a, length) : Maybe<&2, List<&2, U32>>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/packed/proof.bend digest_octets_length @s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/state.State -> {List.length(&2, U32, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.digest_octets(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.digest(s))) == 32n : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/padding.bend zeros_correct @r:Nat -> {Nat.mod(Nat.sub(119n, r), 64n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha.zero_count(r) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/proof.bend empty_vector {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/sha256.sha256([]) == [3820012610, 2566659092, 2600203464, 2574235940, 665731556, 1687917388, 2761267483, 2018687061] : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/proof.bend abc_vector {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/sha256.sha256([97, 98, 99]) == [3128432319, 2399260650, 1094795486, 1571693091, 2953011619, 2518121116, 3021012833, 4060091821] : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/proof.bend padding_boundary_vector {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/sha256.sha256(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/sha256.ascii("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq")) == [613247585, 3523623096, 3854575251, 205414457, 2738676825, 1694441831, 4142722516, 433784513] : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha/proof.bend multiblock_vector {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/sha256.sha256(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha/sha256.ascii("abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu")) == [3478853287, 2024768384, 57468318, 2063897143, 186948369, 3908074065, 2947302659, 2063526353] : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha3/conformance.bend inject_correct @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> @+l0:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.Lane -> @+l1:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.Lane -> @+l2:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.Lane -> @+l3:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.Lane -> @+l4:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.Lane -> @+l5:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.Lane -> @+l6:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.Lane -> @+l7:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.Lane -> @+l8:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.Lane -> @+l9:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.Lane -> @+l10:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.Lane -> @+l11:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.Lane -> @+l12:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.Lane -> @+l13:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.Lane -> @+l14:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.Lane -> @+l15:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.Lane -> @+l16:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.inject(s, l0, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, l13, l14, l15, l16) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha3.of_lanes(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha3.xor_lanes(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha3.to_lanes(s), [l0, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, l13, l14, l15, l16])) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha3/conformance.bend absorb_correct @+ls:List<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.Lane> -> @+rounds:Nat -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.absorb(ls, rounds, s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha3.absorb(ls, rounds, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha3/conformance.bend lanes_correct @+bytes:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.lanes(bytes) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha3.lanes(bytes) : List<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.Lane>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha3/conformance.bend tail_correct @+q:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.tail(q) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha3.padding_bytes(q) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha3/conformance.bend suffix_correct @+n:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.suffix(n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha3.padding(n) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha3/conformance.bend digest_correct @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.digest_bytes(s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha3.squeeze(s) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha3/conformance.bend digest_length @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/keccak/types.State -> {List.length(&2, U32, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.digest_bytes(s)) == 32n : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha3/conformance.bend keccak_correct @+bytes:List<&2, U32> -> @+rounds:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha3/core.keccak(bytes, rounds) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha3.keccak(bytes, rounds) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha512/conformance.bend step_correct @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.State -> @+k:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+w:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.step(s, k, w) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha512.step(s, k, w) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha512/conformance.bend feedforward_correct @+x:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.State -> @+y:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.feedforward(x, y) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha512.feedforward(x, y) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha512/conformance.bend next_correct @+a:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+b:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+c:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+d:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+e:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+f:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+g:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+i:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+j:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+k:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+l:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+m:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+n:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+o:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+p:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+rest:List<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.next(b, g, o, p) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha512.recurrence(a <> b <> c <> d <> e <> f <> g <> h <> i <> j <> k <> l <> m <> n <> o <> p <> rest) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha512/conformance.bend window_rounds_correct @+q:Nat -> @+a:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+b:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+c:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+d:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+e:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+f:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+g:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+i:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+j:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+k:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+l:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+m:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+n:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+o:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+p:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+rest:List<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane> -> @+ks:List<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane> -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.window_rounds(q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.Win{a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p}, ks, s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha512.rounds(ks, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha512.extension(q, a <> b <> c <> d <> e <> f <> g <> h <> i <> j <> k <> l <> m <> n <> o <> p <> rest), s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha512/conformance.bend block_rounds_correct @+ws:List<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane> -> @+q:Nat -> @+a:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+b:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+c:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+d:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+e:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+f:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+g:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+i:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+j:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+k:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+l:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+m:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+n:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+o:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+p:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+rest:List<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane> -> @+ks:List<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane> -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.block_rounds(ws, q, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.Win{a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p}, ks, s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha512.rounds(ks, List.append(&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane, ws, 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha512.extension(q, a <> b <> c <> d <> e <> f <> g <> h <> i <> j <> k <> l <> m <> n <> o <> p <> rest)), s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha512/conformance.bend compress16_correct @+a:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+b:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+c:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+d:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+e:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+f:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+g:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+h:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+i:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+j:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+k:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+l:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+m:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+n:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+o:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+p:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+q:Nat -> @+ks:List<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane> -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.compress16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, ks, s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha512.compress(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha512.schedule(q, [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p]), ks, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha512/conformance.bend blocks_correct @+ws:List<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane> -> @+q:Nat -> @+ks:List<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane> -> @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.blocks(ws, q, ks, s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha512.blocks(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha512.schedules(ws, q), ks, s) : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha512/conformance.bend lanes_correct @+bytes:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.lanes(bytes) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha512.words(bytes) : List<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha512/conformance.bend zeros_correct @+r:Nat -> @+fits:Bool -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.zeros_if(r, fits) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha512.zero_count_if(r, fits) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha512/conformance.bend suffix_correct @+n:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.suffix(n) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha512.padding_suffix(n) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha512/conformance.bend digest_correct @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.State -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.digest_bytes(s) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha512.digest_octets(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha512.digest(s)) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha512/conformance.bend digest_length @+s:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.State -> {List.length(&2, U32, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.digest_bytes(s)) == 64n : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha512/conformance.bend constants_correct {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.round_constants == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha512.constants : List<&2, 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha512/conformance.bend initial_correct {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.initial == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha512.initial : 0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.State} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha512/conformance.bend sha512_correct @+bytes:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/core.sha512(bytes) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha512.sha512_bytes(bytes) : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha512/words.bend carry_bit @+b:Bool -> {0xa7e654f9780078ca65bf9e187da99d3e/src/math/w64.b32(b) == Bool.to_u32(b) : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/sha512/words.bend add_value @+a:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> @+b:0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/sha512/types.Lane -> {value(0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/sha512.add(a, b)) == 0xa7e654f9780078ca65bf9e187da99d3e/spec/lib/common.low(64n, Nat.add(value(a), value(b))) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/subtle/proof.bend step @+acc:U32 -> @+x:U32 -> @+y:U32 -> @+e:Bool -> {Bool.and(U32.is_eq(U32.or(acc, U32.xor(x, y)), 0), e) == Bool.and(U32.is_eq(acc, 0), Bool.and(U32.is_eq(x, y), e)) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/subtle/proof.bend fold @+a:List<&2, U32> -> @+b:List<&2, U32> -> @+acc:U32 -> {Bool.and(Nat.is_eq(List.length(&2, U32, a), List.length(&2, U32, b)), U32.is_eq(0xa7e654f9780078ca65bf9e187da99d3e/src/crypto/subtle.diff(a, b, acc), 0)) == Bool.and(U32.is_eq(acc, 0), 0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/subtle.equal(a, b)) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/subtle/proof.bend equal_sound @+a:List<&2, U32> -> @+b:List<&2, U32> -> @+h:{0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/subtle.equal(a, b) == True{} : Bool} -> {a == b : List<&2, U32>} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/subtle/proof.bend equal_refl @+a:List<&2, U32> -> {0xa7e654f9780078ca65bf9e187da99d3e/spec/crypto/subtle.equal(a, a) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/subtle/word.bend and_true @+b:Bool -> {Bool.and(b, True{}) == b : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/subtle/word.bend and_false @+b:Bool -> {Bool.and(b, False{}) == False{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/subtle/word.bend and_assoc @+a:Bool -> @+b:Bool -> @+c:Bool -> {Bool.and(Bool.and(a, b), c) == Bool.and(a, Bool.and(b, c)) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/subtle/word.bend fin_eq @+ab:Bool -> @+bb:Bool -> @+t:Cmp -> {Cmp.is_eq(Word.cmp.fin(ab, bb, t)) == Bool.and(Cmp.is_eq(t), Cmp.is_eq(Bool.cmp(ab, bb))) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/subtle/word.bend bits_or @+a:Bool -> @+b:Bool -> @+x:Bool -> @+y:Bool -> {Bool.and(Bool.and(a, b), Cmp.is_eq(Bool.cmp(Bool.or(x, y), False{}))) == Bool.and(Bool.and(a, Cmp.is_eq(Bool.cmp(x, False{}))), Bool.and(b, Cmp.is_eq(Bool.cmp(y, False{})))) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/subtle/word.bend bits_xor @+k:Bool -> @+x:Bool -> @+y:Bool -> {Bool.and(k, Cmp.is_eq(Bool.cmp(Bool.xor(x, y), False{}))) == Bool.and(k, Cmp.is_eq(Bool.cmp(x, y))) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/subtle/word.bend bit_eq @+x:Bool -> @+y:Bool -> @+h:{Cmp.is_eq(Bool.cmp(x, y)) == True{} : Bool} -> {x == y : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/subtle/word.bend bit_refl @+k:Bool -> @+x:Bool -> {Bool.and(k, Cmp.is_eq(Bool.cmp(x, x))) == k : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/subtle/word.bend or_zero @+n:Nat -> @+x:Word(n) -> @+y:Word(n) -> {Cmp.is_eq(Word.cmp(n, Word.or(n, x, y), Word.zero(n))) == Bool.and(Cmp.is_eq(Word.cmp(n, x, Word.zero(n))), Cmp.is_eq(Word.cmp(n, y, Word.zero(n)))) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/subtle/word.bend xor_zero @+n:Nat -> @+x:Word(n) -> @+y:Word(n) -> {Cmp.is_eq(Word.cmp(n, Word.xor(n, x, y), Word.zero(n))) == Cmp.is_eq(Word.cmp(n, x, y)) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/subtle/word.bend cmp_sound @+n:Nat -> @+x:Word(n) -> @+y:Word(n) -> @+h:{Cmp.is_eq(Word.cmp(n, x, y)) == True{} : Bool} -> {x == y : Word(n)} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/subtle/word.bend cmp_refl @+n:Nat -> @+x:Word(n) -> {Cmp.is_eq(Word.cmp(n, x, x)) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/subtle/word.bend u32_or_zero @+x:U32 -> @+y:U32 -> {U32.is_eq(U32.or(x, y), 0) == Bool.and(U32.is_eq(x, 0), U32.is_eq(y, 0)) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/subtle/word.bend u32_xor_zero @+x:U32 -> @+y:U32 -> {U32.is_eq(U32.xor(x, y), 0) == U32.is_eq(x, y) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/subtle/word.bend u32_sound @+x:U32 -> @+y:U32 -> @+h:{U32.is_eq(x, y) == True{} : Bool} -> {x == y : U32} bend-collections-laws-crypto@1.0.0.0/proofs/crypto/subtle/word.bend u32_refl @+x:U32 -> {U32.is_eq(x, x) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/addition.bend bit_conservation @a:Nat -> @+b:Nat -> @x:Bool -> @y:Bool -> @c:Bool -> {Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.bit_value(sum_bit(Bool.full_add(x, y, c))), Nat.double(Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.bit_value(carry_bit(Bool.full_add(x, y, c))), Nat.add(a, b)))) == Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.bit_value(c), Nat.add(Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.bit_value(x), Nat.double(a)), Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.bit_value(y), Nat.double(b)))) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/addition.bend lift_conservation @+bit:Bool -> @+value:Nat -> @+carry:Nat -> @+total:Nat -> @e:{Nat.add(value, carry) == total : Nat} -> {Nat.add(Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.bit_value(bit), Nat.double(value)), Nat.double(carry)) == Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.bit_value(bit), Nat.double(total)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/addition.bend adc_shape @+n:Nat -> @a:Word(n) -> @b:Word(n) -> @pair:Pair(Bool, Bool) -> {Word.adc.con(n, a, b, False{}, pair) == WCon{sum_bit(pair), Word.adc(n, a, b, False{}, carry_bit(pair))} : Word(1n+n)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/addition.bend step @+n:Nat -> @+a:Word(n) -> @+b:Word(n) -> @+x:Bool -> @+y:Bool -> @+c:Bool -> @e:{Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.unsigned(n, Word.adc(n, a, b, False{}, carry_bit(Bool.full_add(x, y, c)))), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.scale_binary(n, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.bit_value(carry_out(n, a, b, carry_bit(Bool.full_add(x, y, c)))))) == Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.bit_value(carry_bit(Bool.full_add(x, y, c))), Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.unsigned(n, a), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.unsigned(n, b))) : Nat} -> {Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.unsigned(1n+n, Word.adc(1n+n, WCon{x, a}, WCon{y, b}, False{}, c)), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.scale_binary(1n+n, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.bit_value(carry_out(1n+n, WCon{x, a}, WCon{y, b}, c)))) == Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.bit_value(c), Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.unsigned(1n+n, WCon{x, a}), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.unsigned(1n+n, WCon{y, b}))) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/addition.bend adc_conservation @+n:Nat -> @a:Word(n) -> @b:Word(n) -> @+c:Bool -> {Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.unsigned(n, Word.adc(n, a, b, False{}, c)), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.scale_binary(n, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.bit_value(carry_out(n, a, b, c)))) == Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.bit_value(c), Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.unsigned(n, a), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.unsigned(n, b))) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/addition.bend addition_conservation @+a:Word(64n) -> @+b:Word(64n) -> {Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.unsigned(64n, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/wide.add(a, b)), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.scale_binary(64n, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.bit_value(carry_out(64n, a, b, False{})))) == Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.unsigned(64n, a), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.unsigned(64n, b)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/counter.bend scale_zero @n:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.scale_binary(n, 0n) == 0n : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/counter.bend increment_conservation @+n:Nat -> @w:Word(n) -> {Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.unsigned(n, Word.inc(n, w)), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.scale_binary(n, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.bit_value(carry(n, w)))) == 1n+0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.unsigned(n, w) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/counter.bend counter_conservation @+w:Word(64n) -> {Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.unsigned(64n, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/wide.inc(w)), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.scale_binary(64n, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.bit_value(carry(64n, w)))) == 1n+0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.unsigned(64n, w) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/invariants.bend initial_representation @-V:Data -> @capacity_predecessor:Nat -> {representation(String, string_identity, V, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/cache.init(String, V, 1n+capacity_predecessor)) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/invariants.bend skipped_prefix_rejected {critbit(Nat, MNode{33n, MLeaf{"", 0n}, MLeaf{"aa", 1n}}) == False{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/invariants.bend lookup_preserves_critbit @-V:Data -> @+d:V -> @+m:Map<&2, V> -> @+key:String -> {critbit(V, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/native_map.lookup_map(V, Map.get(V, d, m, key))) == critbit(V, m) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend recursive_bit_key @c:Char -> @r:Pair(String, Bool) -> {routed_key(Map.bit.go.rec(c, r)) == SCon{c, routed_key(r)} : String} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend bit_go_preserves_key @key:String -> @+character:Nat -> @+offset:Nat -> {routed_key(Map.bit.go(key, character, offset)) == key : String} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend bit_at_preserves_key @key:String -> @coordinates:Pair(Nat, Nat) -> {routed_key(Map.bit.at(key, coordinates)) == key : String} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend bit_preserves_key @key:String -> @position:Nat -> {routed_key(Map.bit(key, position)) == key : String} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend get_go_bridge @-V:Data -> @d:V -> @+p:Nat -> @lo:Map<&2, V> -> @hi:Map<&2, V> -> @kb:Pair(String, Bool) -> {Map.get.go(V, MNode{p, lo, hi}, d, kb) == get_bit(V, d, lo, hi, p, kb) : Pair(Map<&2, V>, V)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend get_node @-V:Data -> @d:V -> @+p:Nat -> @lo:Map<&2, V> -> @hi:Map<&2, V> -> @key:String -> {Map.get(V, d, MNode{p, lo, hi}, key) == get_bit(V, d, lo, hi, p, Map.bit(key, p)) : Pair(Map<&2, V>, V)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend has_go_bridge @-a:Quant -> @-V:Kind(a) -> @+p:Nat -> @lo:Map -> @hi:Map -> @kb:Pair(String, Bool) -> {Map.has.go(a, V, MNode{p, lo, hi}, kb) == has_bit(a, V, lo, hi, p, kb) : Pair(Map, Bool)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend has_node @-a:Quant -> @-V:Kind(a) -> @+p:Nat -> @lo:Map -> @hi:Map -> @key:String -> {Map.has(a, V, MNode{p, lo, hi}, key) == has_bit(a, V, lo, hi, p, Map.bit(key, p)) : Pair(Map, Bool)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend put_go_bridge @-a:Quant -> @-V:Kind(a) -> @x:V -> @+p:Nat -> @lo:Map -> @hi:Map -> @kb:Pair(String, Bool) -> {Map.put.go(a, V, MNode{p, lo, hi}, x, kb) == put_bit(a, V, x, p, lo, hi, kb) : Map} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend put_node @-a:Quant -> @-V:Kind(a) -> @x:V -> @+p:Nat -> @lo:Map -> @hi:Map -> @key:String -> {Map.put(a, V, MNode{p, lo, hi}, key, x) == put_bit(a, V, x, p, lo, hi, Map.bit(key, p)) : Map} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend pop_go_bridge @-a:Quant -> @-V:Kind(a) -> @+p:Nat -> @lo:Map -> @hi:Map -> @kb:Pair(String, Bool) -> {Map.pop.go(a, V, MNode{p, lo, hi}, kb) == pop_bit(a, V, lo, hi, p, kb) : Pair(Map, Maybe)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend pop_node @-a:Quant -> @-V:Kind(a) -> @+p:Nat -> @lo:Map -> @hi:Map -> @key:String -> {Map.pop(a, V, MNode{p, lo, hi}, key) == pop_bit(a, V, lo, hi, p, Map.bit(key, p)) : Pair(Map, Maybe)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend seek_go_bridge @-a:Quant -> @-V:Kind(a) -> @+p:Nat -> @lo:Map -> @hi:Map -> @kb:Pair(String, Bool) -> {Map.seek.go(a, V, MNode{p, lo, hi}, kb) == seek_bit(a, V, lo, hi, p, kb) : Pair(Map, Pair(String, Maybe<&2, String>))} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend seek_node @-a:Quant -> @-V:Kind(a) -> @+p:Nat -> @lo:Map -> @hi:Map -> @key:String -> {Map.seek(a, V, MNode{p, lo, hi}, key) == seek_bit(a, V, lo, hi, p, Map.bit(key, p)) : Pair(Map, Pair(String, Maybe<&2, String>))} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend ins_splice_bridge @-a:Quant -> @-V:Kind(a) -> @+q:Nat -> @lo:Map -> @hi:Map -> @x:V -> @+p:Nat -> @key:String -> @kb:Pair(String, Bool) -> @hk:{routed_key(kb) == key : String} -> {Map.ins.go(a, V, MNode{q, lo, hi}, x, p, kb, False{}) == Map.ins.splice(a, V, p, key, x, MNode{q, lo, hi}) : Map} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend ins_deep_bridge @-a:Quant -> @-V:Kind(a) -> @+q:Nat -> @lo:Map -> @hi:Map -> @x:V -> @+p:Nat -> @kb:Pair(String, Bool) -> {Map.ins.go(a, V, MNode{q, lo, hi}, x, p, kb, True{}) == ins_deep(a, V, x, lo, hi, p, q, kb) : Map} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend ins_t @-a:Quant -> @-V:Kind(a) -> @+pos:Nat -> @lo:Map -> @hi:Map -> @+key:String -> @x:V -> @+p:Nat -> @t:Bool -> {Map.ins.go(a, V, MNode{pos, lo, hi}, x, p, Map.bit(key, pos), t) == ins_if(a, V, key, x, lo, hi, pos, p, t) : Map} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend ins_node @-a:Quant -> @-V:Kind(a) -> @+pos:Nat -> @lo:Map -> @hi:Map -> @+key:String -> @x:V -> @+p:Nat -> {Map.ins(a, V, MNode{pos, lo, hi}, key, x, p) == ins_if(a, V, key, x, lo, hi, pos, p, Nat.is_lt(pos, p)) : Map} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend add_zero @n:Nat -> {Nat.add(n, 0n) == n : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend add_commute @a:Nat -> @+b:Nat -> {Nat.add(a, b) == Nat.add(b, a) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend add_sub_bound @n:Nat -> @m:Nat -> @+k:Nat -> @bound:{Nat.is_le(m, n) == True{} : Bool} -> @inside:{Nat.is_le(k, Nat.sub(n, m)) == True{} : Bool} -> {Nat.is_le(Nat.add(m, k), n) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend sub_from_add @n:Nat -> @k:Nat -> @+m:Nat -> @bound:{Nat.is_le(Nat.add(k, m), n) == True{} : Bool} -> {Nat.is_le(m, Nat.sub(n, k)) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend add_complement @n:Nat -> @m:Nat -> @bound:{Nat.is_le(m, n) == True{} : Bool} -> {Nat.add(m, Nat.sub(n, m)) == n : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend strict_successor @a:Nat -> @b:Nat -> @strict:{Nat.is_lt(a, b) == True{} : Bool} -> {Nat.is_le(1n+a, b) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend less_is_le @a:Nat -> @b:Nat -> @e:{Nat.is_lt(a, b) == True{} : Bool} -> {Nat.is_le(a, b) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend lift_split @+limit:Nat -> @+offset:Nat -> @split:Split(limit, offset) -> Split(1n+limit, 1n+offset) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend split_offset @limit:Nat -> @offset:Nat -> Split(limit, offset) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_index.bend quotient_translation @n:Nat -> @m:Nat -> @+q:Nat -> @r:Nat -> {Nat.divmod.go(n, m, 1n+q, r) == next_quotient(Nat.divmod.go(n, m, q, r)) : Pair(Nat, Nat)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_index.bend character_stride @position:Nat -> {Nat.divmod(Nat.add(33n, position), 33n) == next_quotient(Nat.divmod(position, 33n)) : Pair(Nat, Nat)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_index.bend bit_at_next @h:Char -> @tail:String -> @pair:Pair(Nat, Nat) -> {Map.bit.at(SCon{h, tail}, next_quotient(pair)) == Map.bit.go.rec(h, Map.bit.at(tail, pair)) : Pair(String, Bool)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_index.bend native_character_stride @+h:Char -> @+tail:String -> @+position:Nat -> {Map.bit(SCon{h, tail}, Nat.add(33n, position)) == Map.bit.go.rec(h, Map.bit(tail, position)) : Pair(String, Bool)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_index.bend add_right_successor @a:Nat -> @+b:Nat -> {Nat.add(a, 1n+b) == 1n+Nat.add(a, b) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_index.bend division_no_wrap @n:Nat -> @m:Nat -> @+q:Nat -> @+r:Nat -> @bound:{Nat.is_le(n, m) == True{} : Bool} -> {Nat.divmod.go(n, m, q, r) == (q, Nat.add(n, r)) : Pair(Nat, Nat)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_index.bend first_character_division @+position:Nat -> @bound:{Nat.is_le(position, 32n) == True{} : Bool} -> {Nat.divmod(position, 33n) == (0n, position) : Pair(Nat, Nat)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_index.bend native_first_character @+head:Char -> @+tail:String -> @+position:Nat -> @bound:{Nat.is_le(position, 32n) == True{} : Bool} -> {Map.bit(SCon{head, tail}, position) == Map.bit.go.chr(tail, Map.bit.chr(head, position)) : Pair(String, Bool)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend route_pair @r:Pair(String, Bool) -> {r == (0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/native_map.routed_key(r), route_bit(r)) : Pair(String, Bool)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend route_shape @+key:String -> @+position:Nat -> {Map.bit(key, position) == (key, route_bit(Map.bit(key, position))) : Pair(String, Bool)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend low_value @-V:Data -> @p:Nat -> @hi:Map<&2, V> -> @r:Pair(Map<&2, V>, V) -> {value(V, Map.lo(&2, V, V, p, hi, r)) == value(V, r) : V} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend high_value @-V:Data -> @p:Nat -> @lo:Map<&2, V> -> @r:Pair(Map<&2, V>, V) -> {value(V, Map.hi(&2, V, V, p, lo, r)) == value(V, r) : V} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend node_left @-V:Data -> @+d:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @e:{Map.bit(key, p) == (key, False{}) : Pair(String, Bool)} -> {lookup(V, d, MNode{p, lo, hi}, key) == lookup(V, d, lo, key) : V} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend node_right @-V:Data -> @+d:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @e:{Map.bit(key, p) == (key, True{}) : Pair(String, Bool)} -> {lookup(V, d, MNode{p, lo, hi}, key) == lookup(V, d, hi, key) : V} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend leaf_same @-V:Data -> @d:V -> @key:String -> @x:V -> {lookup(V, d, MLeaf{key, x}, key) == x : V} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend splice_same_bit @-V:Data -> @+d:V -> @+x:V -> @+rest:Map<&2, V> -> @+p:Nat -> @+key:String -> @bit:Bool -> @e:{Map.bit(key, p) == (key, bit) : Pair(String, Bool)} -> {lookup(V, d, Map.ins.splice.bit(&2, V, x, rest, p, (key, bit)), key) == x : V} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend splice_same @-V:Data -> @d:V -> @x:V -> @rest:Map<&2, V> -> @+p:Nat -> @+key:String -> {lookup(V, d, Map.ins.splice(&2, V, p, key, x, rest), key) == x : V} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend deep_same_bit @-V:Data -> @+d:V -> @+x:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+q:Nat -> @+key:String -> @bit:Bool -> @e:{Map.bit(key, q) == (key, bit) : Pair(String, Bool)} -> @lp:{lookup(V, d, Map.ins(&2, V, lo, key, x, p), key) == x : V} -> @hp:{lookup(V, d, Map.ins(&2, V, hi, key, x, p), key) == x : V} -> {lookup(V, d, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_bridge.ins_deep(&2, V, x, lo, hi, p, q, (key, bit)), key) == x : V} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend insertion_branch_same @-V:Data -> @d:V -> @x:V -> @lo:Map<&2, V> -> @hi:Map<&2, V> -> @p:Nat -> @+q:Nat -> @+key:String -> @descend:Bool -> @lp:{lookup(V, d, Map.ins(&2, V, lo, key, x, p), key) == x : V} -> @hp:{lookup(V, d, Map.ins(&2, V, hi, key, x, p), key) == x : V} -> {lookup(V, d, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_bridge.ins_if(&2, V, key, x, lo, hi, q, p, descend), key) == x : V} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend insertion_same @-V:Data -> @+d:V -> @m:Map<&2, V> -> @+key:String -> @+x:V -> @+p:Nat -> {lookup(V, d, Map.ins(&2, V, m, key, x, p), key) == x : V} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend seek_low_found @-V:Data -> @p:Nat -> @hi:Map<&2, V> -> @r:Pair(Map<&2, V>, Pair(String, Maybe<&2, String>)) -> {seek_found(V, Map.lo(&2, V, Pair(String, Maybe<&2, String>), p, hi, r)) == seek_found(V, r) : Maybe<&2, String>} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend seek_high_found @-V:Data -> @p:Nat -> @lo:Map<&2, V> -> @r:Pair(Map<&2, V>, Pair(String, Maybe<&2, String>)) -> {seek_found(V, Map.hi(&2, V, Pair(String, Maybe<&2, String>), p, lo, r)) == seek_found(V, r) : Maybe<&2, String>} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend seek_left @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @e:{Map.bit(key, p) == (key, False{}) : Pair(String, Bool)} -> {seek_found(V, Map.seek(&2, V, MNode{p, lo, hi}, key)) == seek_found(V, Map.seek(&2, V, lo, key)) : Maybe<&2, String>} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend seek_right @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @e:{Map.bit(key, p) == (key, True{}) : Pair(String, Bool)} -> {seek_found(V, Map.seek(&2, V, MNode{p, lo, hi}, key)) == seek_found(V, Map.seek(&2, V, hi, key)) : Maybe<&2, String>} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend replace_left @-V:Data -> @d:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @+x:V -> @+e:{Map.bit(key, p) == (key, False{}) : Pair(String, Bool)} -> {lookup(V, d, Map.put(&2, V, MNode{p, lo, hi}, key, x), key) == lookup(V, d, Map.put(&2, V, lo, key, x), key) : V} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend replace_right @-V:Data -> @d:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @+x:V -> @+e:{Map.bit(key, p) == (key, True{}) : Pair(String, Bool)} -> {lookup(V, d, Map.put(&2, V, MNode{p, lo, hi}, key, x), key) == lookup(V, d, Map.put(&2, V, hi, key, x), key) : V} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend certificate_left @-V:Data -> @+d:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @+x:V -> @found:Maybe<&2, String> -> @e:{Map.bit(key, p) == (key, False{}) : Pair(String, Bool)} -> @cp:replacement_certificate(V, d, lo, key, x, found) -> replacement_certificate(V, d, MNode{p, lo, hi}, key, x, found) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend certificate_right @-V:Data -> @+d:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @+x:V -> @found:Maybe<&2, String> -> @e:{Map.bit(key, p) == (key, True{}) : Pair(String, Bool)} -> @cp:replacement_certificate(V, d, hi, key, x, found) -> replacement_certificate(V, d, MNode{p, lo, hi}, key, x, found) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend certificate_branch @-V:Data -> @d:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @x:V -> @bit:Bool -> @+e:{Map.bit(key, p) == (key, bit) : Pair(String, Bool)} -> @lp:replacement_certificate(V, d, lo, key, x, seek_found(V, Map.seek(&2, V, lo, key))) -> @hp:replacement_certificate(V, d, hi, key, x, seek_found(V, Map.seek(&2, V, hi, key))) -> replacement_certificate(V, d, MNode{p, lo, hi}, key, x, seek_found(V, Map.seek(&2, V, MNode{p, lo, hi}, key))) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend replacement_at_seek @-V:Data -> @+d:V -> @m:Map<&2, V> -> @+key:String -> @+x:V -> replacement_certificate(V, d, m, key, x, seek_found(V, Map.seek(&2, V, m, key))) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend seek_low_shape @-V:Data -> @p:Nat -> @lo:Map<&2, V> -> @hi:Map<&2, V> -> @key:String -> @r:Pair(Map<&2, V>, Pair(String, Maybe<&2, String>)) -> @e:{r == (lo, key, seek_found(V, r)) : Pair(Map<&2, V>, Pair(String, Maybe<&2, String>))} -> {Map.lo(&2, V, Pair(String, Maybe<&2, String>), p, hi, r) == (MNode{p, lo, hi}, key, seek_found(V, Map.lo(&2, V, Pair(String, Maybe<&2, String>), p, hi, r))) : Pair(Map<&2, V>, Pair(String, Maybe<&2, String>))} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend seek_high_shape @-V:Data -> @p:Nat -> @lo:Map<&2, V> -> @hi:Map<&2, V> -> @key:String -> @r:Pair(Map<&2, V>, Pair(String, Maybe<&2, String>)) -> @e:{r == (hi, key, seek_found(V, r)) : Pair(Map<&2, V>, Pair(String, Maybe<&2, String>))} -> {Map.hi(&2, V, Pair(String, Maybe<&2, String>), p, lo, r) == (MNode{p, lo, hi}, key, seek_found(V, Map.hi(&2, V, Pair(String, Maybe<&2, String>), p, lo, r))) : Pair(Map<&2, V>, Pair(String, Maybe<&2, String>))} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend seek_branch_shape @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @+bit:Bool -> @e:{Map.bit(key, p) == (key, bit) : Pair(String, Bool)} -> @lp:{Map.seek(&2, V, lo, key) == (lo, key, seek_found(V, Map.seek(&2, V, lo, key))) : Pair(Map<&2, V>, Pair(String, Maybe<&2, String>))} -> @hp:{Map.seek(&2, V, hi, key) == (hi, key, seek_found(V, Map.seek(&2, V, hi, key))) : Pair(Map<&2, V>, Pair(String, Maybe<&2, String>))} -> {Map.seek(&2, V, MNode{p, lo, hi}, key) == (MNode{p, lo, hi}, key, seek_found(V, Map.seek(&2, V, MNode{p, lo, hi}, key))) : Pair(Map<&2, V>, Pair(String, Maybe<&2, String>))} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend seek_shape @-V:Data -> @m:Map<&2, V> -> @+key:String -> {Map.seek(&2, V, m, key) == (m, key, seek_found(V, Map.seek(&2, V, m, key))) : Pair(Map<&2, V>, Pair(String, Maybe<&2, String>))} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend set_comparison_case @-V:Data -> @+d:V -> @m:Map<&2, V> -> @+key:String -> @+stored:String -> @x:V -> @c:Cmp -> @e:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/native_map.comparison_tag(String, String.cmp(key, stored)) == c : Cmp} -> @cp:(@equal:{key == stored : String} -> {lookup(V, d, Map.put(&2, V, m, key, x), key) == x : V}) -> {lookup(V, d, Map.set.fin.go(&2, V, m, key, x, ((key, stored), c)), key) == x : V} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend set_found_case @-V:Data -> @d:V -> @m:Map<&2, V> -> @+key:String -> @+stored:String -> @x:V -> @cp:(@equal:{key == stored : String} -> {lookup(V, d, Map.put(&2, V, m, key, x), key) == x : V}) -> {lookup(V, d, Map.set.fin(&2, V, m, key, x, key, stored), key) == x : V} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend set_seek_case @-V:Data -> @d:V -> @m:Map<&2, V> -> @key:String -> @x:V -> @found:Maybe<&2, String> -> @cp:replacement_certificate(V, d, m, key, x, found) -> {lookup(V, d, Map.set.go(&2, V, x, (m, key, found)), key) == x : V} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend set_same @-V:Data -> @+d:V -> @+m:Map<&2, V> -> @+key:String -> @+x:V -> {lookup(V, d, Map.set(&2, V, m, key, x), key) == x : V} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend leaf_comparison @-V:Data -> @+key:String -> @+stored:String -> @item:Maybe<&2, V> -> @cmp:Cmp -> @e:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/string_compare.comparison_tag(String, String.cmp(key, stored)) == cmp : Cmp} -> certificate(V, MLeaf{stored, item}, key, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_insert.value(Maybe<&2, V>, Map.get.leaf(Maybe<&2, V>, None{}, item, ((key, stored), cmp)))) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend leaf_lookup @-V:Data -> @+key:String -> @+stored:String -> @+item:Maybe<&2, V> -> certificate(V, MLeaf{stored, item}, key, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, MLeaf{stored, item}, key)) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend lift_left @-V:Data -> @lo:Map<&2, Maybe<&2, V>> -> @hi:Map<&2, Maybe<&2, V>> -> @p:Nat -> @key:String -> @found:Maybe<&2, V> -> @cp:certificate(V, lo, key, found) -> certificate(V, MNode{p, lo, hi}, key, found) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend lift_right @-V:Data -> @lo:Map<&2, Maybe<&2, V>> -> @hi:Map<&2, Maybe<&2, V>> -> @p:Nat -> @key:String -> @found:Maybe<&2, V> -> @cp:certificate(V, hi, key, found) -> certificate(V, MNode{p, lo, hi}, key, found) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend branch @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+p:Nat -> @+key:String -> @bit:Bool -> @e:{Map.bit(key, p) == (key, bit) : Pair(String, Bool)} -> @lp:certificate(V, lo, key, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, lo, key)) -> @hp:certificate(V, hi, key, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, hi, key)) -> certificate(V, MNode{p, lo, hi}, key, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, MNode{p, lo, hi}, key)) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend lookup_certificate @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+key:String -> certificate(V, tree, key, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key)) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend returned_value_is_stored @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @value:V -> @found:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == Some{value} : Maybe<&2, V>} -> leaf(V, tree, key, value) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend accumulator_included @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+acc:List<&2, Sigma<&2, &2, String, _ => Maybe<&2, V>>> -> @+key:String -> @+value:V -> @member:listed(V, acc, key, value) -> listed(V, Map.to_list.go(&2, Maybe<&2, V>, tree, acc), key, value) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend leaf_enumerated @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+acc:List<&2, Sigma<&2, &2, String, _ => Maybe<&2, V>>> -> @+key:String -> @+value:V -> @member:leaf(V, tree, key, value) -> listed(V, Map.to_list.go(&2, Maybe<&2, V>, tree, acc), key, value) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend returned_value_enumerated @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+value:V -> @found:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == Some{value} : Maybe<&2, V>} -> listed(V, Map.to_list(&2, Maybe<&2, V>, tree), key, value) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend false_true @e:{False{} == True{} : Bool} -> Empty bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend and_left @a:Bool -> @b:Bool -> @e:{Bool.and(a, b) == True{} : Bool} -> {a == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend and_right @a:Bool -> @b:Bool -> @e:{Bool.and(a, b) == True{} : Bool} -> {b == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend equal_bit @bit:Bool -> @side:Bool -> @e:{Bool.not(Bool.xor(bit, side)) == True{} : Bool} -> {bit == side : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend route_projection @r:Pair(String, Bool) -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/invariants.bit_value(r) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_insert.route_bit(r) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend routed_certificate @-V:Data -> @tree:Map<&2, V> -> @+pos:Nat -> @+side:Bool -> @+e:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/invariants.routed(V, tree, pos, side) == True{} : Bool} -> routed(V, tree, pos, side) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend member_routed @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+value:V -> @+pos:Nat -> @+side:Bool -> @routes:routed(Maybe<&2, V>, tree, pos, side) -> @member:0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_lookup.leaf(V, tree, key, value) -> {Map.bit(key, pos) == (key, side) : Pair(String, Bool)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend duplicate_member @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+value:V -> @member:0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_lookup.leaf(V, tree, key, value) -> Pair(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_lookup.leaf(V, tree, key, value), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_lookup.leaf(V, tree, key, value)) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend lookup_left @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+p:Nat -> @+key:String -> @+value:V -> @routes:routed(Maybe<&2, V>, lo, p, False{}) -> @induction:(@member:0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_lookup.leaf(V, lo, key, value) -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, lo, key) == Some{value} : Maybe<&2, V>}) -> @copies:Pair(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_lookup.leaf(V, lo, key, value), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_lookup.leaf(V, lo, key, value)) -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, MNode{p, lo, hi}, key) == Some{value} : Maybe<&2, V>} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend lookup_right @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+p:Nat -> @+key:String -> @+value:V -> @routes:routed(Maybe<&2, V>, hi, p, True{}) -> @induction:(@member:0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_lookup.leaf(V, hi, key, value) -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, hi, key) == Some{value} : Maybe<&2, V>}) -> @copies:Pair(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_lookup.leaf(V, hi, key, value), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_lookup.leaf(V, hi, key, value)) -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, MNode{p, lo, hi}, key) == Some{value} : Maybe<&2, V>} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend member_lookup @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+value:V -> @invariant:valid(Maybe<&2, V>, tree) -> @member:0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_lookup.leaf(V, tree, key, value) -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == Some{value} : Maybe<&2, V>} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend critbit_certificate @-V:Data -> @tree:Map<&2, V> -> @+e:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/invariants.critbit(V, tree) == True{} : Bool} -> valid(V, tree) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend critbit_member_lookup @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @key:String -> @value:V -> @invariant:{0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @member:0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_lookup.leaf(V, tree, key, value) -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == Some{value} : Maybe<&2, V>} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend empty_lookup @-V:Data -> @d:V -> @k:String -> {Map.get(V, d, Map.new(&2, V), k) == (MTip{}, d) : Pair(Map<&2, V>, V)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend empty_set @-V:Data -> @k:String -> @v:V -> {Map.set(&2, V, Map.new(&2, V), k, v) == MLeaf{k, v} : Map<&2, V>} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend empty_delete @-V:Data -> @k:String -> {Map.del(&2, V, Map.new(&2, V), k) == MTip{} : Map<&2, V>} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend empty_has @-V:Data -> @k:String -> {Map.has(&2, V, Map.new(&2, V), k) == (MTip{}, False{}) : Pair(Map<&2, V>, Bool)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend zero_character_presence @tail:String -> {Map.bit.go(SCon{'\0', tail}, 0n, 0n) == (SCon{'\0', tail}, True{}) : Pair(String, Bool)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend empty_presence {Map.bit.go("", 0n, 0n) == ("", False{}) : Pair(String, Bool)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend boolean_compare_self @b:Bool -> {Bool.cmp(b, b) == EQ{} : Cmp} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend word_compare_self @n:Nat -> @w:Word(n) -> {Word.cmp(n, w, w) == EQ{} : Cmp} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend character_compare_self @c:Char -> {Char.cmp(c, c) == ((c, c), EQ{}) : Pair(Pair(Char, Char), Cmp)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_compare_self @s:String -> {String.cmp(s, s) == ((s, s), EQ{}) : Pair(Pair(String, String), Cmp)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend singleton_get @-V:Data -> @d:V -> @k:String -> @v:V -> {Map.get(V, d, MLeaf{k, v}, k) == (MLeaf{k, v}, v) : Pair(Map<&2, V>, V)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend singleton_update @-V:Data -> @k:String -> @old:V -> @value:V -> {Map.set(&2, V, MLeaf{k, old}, k, value) == MLeaf{k, value} : Map<&2, V>} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend singleton_delete @-V:Data -> @k:String -> @v:V -> {Map.del(&2, V, MLeaf{k, v}, k) == MTip{} : Map<&2, V>} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend recursive_bit_key @c:Char -> @r:Pair(String, Bool) -> {routed_key(Map.bit.go.rec(c, r)) == SCon{c, routed_key(r)} : String} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend bit_go_preserves_key @key:String -> @+character:Nat -> @+offset:Nat -> {routed_key(Map.bit.go(key, character, offset)) == key : String} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend bit_at_preserves_key @key:String -> @coordinates:Pair(Nat, Nat) -> {routed_key(Map.bit.at(key, coordinates)) == key : String} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend bit_preserves_key @key:String -> @position:Nat -> {routed_key(Map.bit(key, position)) == key : String} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend word_comparison_step @n:Nat -> @a:Word(n) -> @b:Word(n) -> @c:Cmp -> @x:Bool -> @y:Bool -> @proof:comparison_identity(Word(n), a, b, c) -> comparison_identity(Word(1n+n), WCon{x, a}, WCon{y, b}, Word.cmp.fin(x, y, c)) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend word_comparison_identity @n:Nat -> @a:Word(n) -> @b:Word(n) -> comparison_identity(Word(n), a, b, Word.cmp(n, a, b)) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend comparison_lift @-A:Type -> @-B:Type -> @f:(@_:A -> B) -> @a:A -> @b:A -> @c:Cmp -> @proof:comparison_identity(A, a, b, c) -> comparison_identity(B, f(a), f(b), c) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend character_comparison_identity @a:Char -> @b:Char -> comparison_result_identity(Char, Char.cmp(a, b)) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_comparison_rec_identity @h:Char -> @r:Pair(Pair(String, String), Cmp) -> @proof:comparison_result_identity(String, r) -> comparison_result_identity(String, String.cmp.rec(h, h, r)) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_comparison_fin_identity @t1:String -> @t2:String -> @hc:Pair(Pair(Char, Char), Cmp) -> @hp:comparison_result_identity(Char, hc) -> @tp:comparison_result_identity(String, String.cmp(t1, t2)) -> comparison_result_identity(String, String.cmp.fin(t1, t2, hc)) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_comparison_identity @a:String -> @b:String -> comparison_result_identity(String, String.cmp(a, b)) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_comparison_shape_step @h1:Char -> @h2:Char -> @t1:String -> @t2:String -> @c:Cmp -> @tp:{String.cmp(t1, t2) == ((t1, t2), comparison_tag(String, String.cmp(t1, t2))) : Pair(Pair(String, String), Cmp)} -> {String.cmp.fin(t1, t2, ((h1, h2), c)) == ((SCon{h1, t1}, SCon{h2, t2}), comparison_tag(String, String.cmp.fin(t1, t2, ((h1, h2), c)))) : Pair(Pair(String, String), Cmp)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_comparison_shape @a:String -> @b:String -> {String.cmp(a, b) == ((a, b), comparison_tag(String, String.cmp(a, b))) : Pair(Pair(String, String), Cmp)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_comparison_original_identity @+a:String -> @+b:String -> comparison_identity(String, a, b, comparison_tag(String, String.cmp(a, b))) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_equal_from_comparison @a:String -> @b:String -> @e:{comparison_tag(String, String.cmp(a, b)) == EQ{} : Cmp} -> {a == b : String} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_equal_comparison @a:String -> @b:String -> @e:{a == b : String} -> {String.cmp(a, b) == ((a, b), EQ{}) : Pair(Pair(String, String), Cmp)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend difference_empty_left @h:Char -> @tail:String -> {Map.diff("", SCon{h, tail}) == 0n : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend difference_empty_right @h:Char -> @tail:String -> {Map.diff(SCon{h, tail}, "") == 0n : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend difference_common_character @h:Char -> @a:String -> @b:String -> {Map.diff(SCon{h, a}, SCon{h, b}) == Nat.add(33n, Map.diff(a, b)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend difference_empty_presence @h:Char -> @tail:String -> {Map.bit.go(SCon{h, tail}, Map.diff("", SCon{h, tail}), 0n) == (SCon{h, tail}, True{}) : Pair(String, Bool)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend lookup_leaf_preserves @-V:Data -> @d:V -> @v:V -> @key:String -> @stored:String -> @c:Cmp -> {lookup_map(V, Map.get.leaf(V, d, v, ((key, stored), c))) == MLeaf{stored, v} : Map<&2, V>} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend lookup_lo_projection @-V:Data -> @p:Nat -> @hi:Map<&2, V> -> @r:Pair(Map<&2, V>, V) -> {lookup_map(V, Map.lo(&2, V, V, p, hi, r)) == MNode{p, lookup_map(V, r), hi} : Map<&2, V>} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend lookup_hi_projection @-V:Data -> @p:Nat -> @lo:Map<&2, V> -> @r:Pair(Map<&2, V>, V) -> {lookup_map(V, Map.hi(&2, V, V, p, lo, r)) == MNode{p, lo, lookup_map(V, r)} : Map<&2, V>} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend lookup_branch_preserves @-V:Data -> @+d:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @kb:Pair(String, Bool) -> @lp:(@key:String -> {lookup_map(V, Map.get(V, d, lo, key)) == lo : Map<&2, V>}) -> @hp:(@key:String -> {lookup_map(V, Map.get(V, d, hi, key)) == hi : Map<&2, V>}) -> {lookup_map(V, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/proofs/map_bridge.get_bit(V, d, lo, hi, p, kb)) == MNode{p, lo, hi} : Map<&2, V>} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend lookup_preserves_map @-V:Data -> @+d:V -> @m:Map<&2, V> -> @+key:String -> {lookup_map(V, Map.get(V, d, m, key)) == m : Map<&2, V>} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend natural_add_associative @a:Nat -> @b:Nat -> @c:Nat -> {Nat.add(a, Nat.add(b, c)) == Nat.add(Nat.add(a, b), c) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend natural_add_right_zero @a:Nat -> {Nat.add(a, 0n) == a : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend keys_accumulator_size @-V:Data -> @m:Map<&2, V> -> @+acc:List<&2, String> -> {List.length(&2, String, Map.keys.go(&2, V, m, acc)) == Nat.add(Map.size(&2, V, m), List.length(&2, String, acc)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend keys_size @-V:Data -> @+m:Map<&2, V> -> {List.length(&2, String, Map.keys(&2, V, m)) == Map.size(&2, V, m) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend entries_accumulator_size @-V:Data -> @m:Map<&2, V> -> @+acc:List<&2, Sigma<&2, &2, String, _ => V>> -> {List.length(&2, Sigma<&2, &2, String, _ => V>, Map.to_list.go(&2, V, m, acc)) == Nat.add(Map.size(&2, V, m), List.length(&2, Sigma<&2, &2, String, _ => V>, acc)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend entries_size @-V:Data -> @+m:Map<&2, V> -> {List.length(&2, Sigma<&2, &2, String, _ => V>, Map.to_list(&2, V, m)) == Map.size(&2, V, m) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend increment_maximum_wraps @n:Nat -> {Word.inc(n, Word.not(n, Word.zero(n))) == Word.zero(n) : Word(n)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend zero_detected @n:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/wide.is_zero(n, Word.zero(n)) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend zero_sign @n:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/wide.last(n, Word.zero(n)) == False{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend divide_zero @+n:Nat -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/wide.div_million(n, Word.zero(n)) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/wide.Div{Word.zero(n), 0} : 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/wide.Division} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend immortal_duration @now:0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/types/model.Int64 -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/time.deadline(now, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/types/model.I64{Word.zero(64n)}) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/types/model.I64{Word.zero(64n)} : 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/types/model.Int64} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend immortal_deadline @now:0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/types/model.Int64 -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/time.expired(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/types/model.I64{Word.zero(64n)}, now) == False{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend counter_rollover {0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/wide.inc(Word.not(64n, Word.zero(64n))) == Word.zero(64n) : Word(64n)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend split_join @+n:Nat -> @+m:Nat -> @a:Word(n) -> @b:Word(m) -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/wide.split(n, m, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/wide.join(n, m, a, b)) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/wide.Split{a, b} : 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/wide.Parts} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend pack_roundtrip @low:U32 -> @high:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/wide.unpack(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/wide.pack(low, high)) == (low, high) : Pair(U32, U32)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend rejoin_cons @+n:Nat -> @+m:Nat -> @h:Bool -> @parts:0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/wide.Parts -> {rejoin(1n+n, m, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/wide.split_cons(n, m, h, parts)) == WCon{h, rejoin(n, m, parts)} : Word(Nat.add(1n+n, m))} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend join_split @+n:Nat -> @+m:Nat -> @w:Word(Nat.add(n, m)) -> {rejoin(n, m, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/wide.split(n, m, w)) == w : Word(Nat.add(n, m))} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend comparison_low_zero_ge @c:Cmp -> @b:Bool -> {Cmp.is_ge(Word.cmp.fin(b, False{}, c)) == Cmp.is_ge(c) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend sign_threshold_correspondence @n:Nat -> @w:Word(1n+n) -> {Cmp.is_ge(Word.cmp(1n+n, w, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.sign_threshold(n))) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/wide.last(1n+n, w) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend comparison_low_zero_eq @c:Cmp -> @b:Bool -> {Cmp.is_eq(Word.cmp.fin(b, False{}, c)) == Bool.and(Bool.not(b), Cmp.is_eq(c)) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend zero_comparison_correspondence @+n:Nat -> @w:Word(n) -> {Cmp.is_eq(Word.cmp(n, w, Word.zero(n))) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/wide.is_zero(n, w) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend signed_order_branches @a:Word(64n) -> @b:Word(64n) -> @sa:Bool -> @sb:Bool -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/wide.signed_order(a, b, sa, sb) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.order(a, b, sa, sb) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend signed_order_refines @+a:Word(64n) -> @+b:Word(64n) -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/wide.le(a, b) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.order(a, b, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.negative(a), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.negative(b)) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend expiration_sentinel_branch @d:0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/types/model.Int64 -> @now:0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/types/model.Int64 -> @immortal:Bool -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/time.expired_choose(d, now, immortal) == Bool.and(Bool.not(immortal), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/time.le(d, now)) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend expiration_refines @deadline:0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/types/model.Int64 -> @now:0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/types/model.Int64 -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/time.expired(deadline, now) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.expired(deadline, now) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend double_add @a:Nat -> @b:Nat -> {Nat.double(Nat.add(a, b)) == Nat.add(Nat.double(a), Nat.double(b)) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend primitive_word_interpretation @+n:Nat -> @w:Word(n) -> {Word.to_nat(n, w) == 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.unsigned(n, w) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend join_interpretation @+n:Nat -> @+m:Nat -> @a:Word(n) -> @+b:Word(m) -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.unsigned(Nat.add(n, m), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/wide.join(n, m, a, b)) == Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.unsigned(n, a), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.scale_binary(n, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.unsigned(m, b))) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend pack_interpretation @low:U32 -> @high:U32 -> {0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.unsigned(64n, 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/src/wide.pack(low, high)) == Nat.add(U32.to_nat(low), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.scale_binary(32n, U32.to_nat(high))) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend boolean_compare_self @b:Bool -> {Bool.cmp(b, b) == EQ{} : Cmp} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend word_compare_self @n:Nat -> @w:Word(n) -> {Word.cmp(n, w, w) == EQ{} : Cmp} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend character_compare_self @c:Char -> {Char.cmp(c, c) == ((c, c), EQ{}) : Pair(Pair(Char, Char), Cmp)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_compare_self @s:String -> {String.cmp(s, s) == ((s, s), EQ{}) : Pair(Pair(String, String), Cmp)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend word_comparison_step @n:Nat -> @a:Word(n) -> @b:Word(n) -> @c:Cmp -> @x:Bool -> @y:Bool -> @proof:comparison_identity(Word(n), a, b, c) -> comparison_identity(Word(1n+n), WCon{x, a}, WCon{y, b}, Word.cmp.fin(x, y, c)) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend word_comparison_identity @n:Nat -> @a:Word(n) -> @b:Word(n) -> comparison_identity(Word(n), a, b, Word.cmp(n, a, b)) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend comparison_lift @-A:Type -> @-B:Type -> @f:(@_:A -> B) -> @a:A -> @b:A -> @c:Cmp -> @proof:comparison_identity(A, a, b, c) -> comparison_identity(B, f(a), f(b), c) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend character_comparison_identity @a:Char -> @b:Char -> comparison_result_identity(Char, Char.cmp(a, b)) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_comparison_rec_identity @h:Char -> @r:Pair(Pair(String, String), Cmp) -> @proof:comparison_result_identity(String, r) -> comparison_result_identity(String, String.cmp.rec(h, h, r)) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_comparison_fin_identity @t1:String -> @t2:String -> @hc:Pair(Pair(Char, Char), Cmp) -> @hp:comparison_result_identity(Char, hc) -> @tp:comparison_result_identity(String, String.cmp(t1, t2)) -> comparison_result_identity(String, String.cmp.fin(t1, t2, hc)) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_comparison_identity @a:String -> @b:String -> comparison_result_identity(String, String.cmp(a, b)) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_comparison_shape_step @h1:Char -> @h2:Char -> @t1:String -> @t2:String -> @c:Cmp -> @tp:{String.cmp(t1, t2) == ((t1, t2), comparison_tag(String, String.cmp(t1, t2))) : Pair(Pair(String, String), Cmp)} -> {String.cmp.fin(t1, t2, ((h1, h2), c)) == ((SCon{h1, t1}, SCon{h2, t2}), comparison_tag(String, String.cmp.fin(t1, t2, ((h1, h2), c)))) : Pair(Pair(String, String), Cmp)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_comparison_shape @a:String -> @b:String -> {String.cmp(a, b) == ((a, b), comparison_tag(String, String.cmp(a, b))) : Pair(Pair(String, String), Cmp)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_comparison_original_identity @+a:String -> @+b:String -> comparison_identity(String, a, b, comparison_tag(String, String.cmp(a, b))) bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_equal_from_comparison @a:String -> @b:String -> @e:{comparison_tag(String, String.cmp(a, b)) == EQ{} : Cmp} -> {a == b : String} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_equal_comparison @a:String -> @b:String -> @e:{a == b : String} -> {String.cmp(a, b) == ((a, b), EQ{}) : Pair(Pair(String, String), Cmp)} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend natural_add_associative @a:Nat -> @b:Nat -> @c:Nat -> {Nat.add(a, Nat.add(b, c)) == Nat.add(Nat.add(a, b), c) : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend natural_add_right_zero @a:Nat -> {Nat.add(a, 0n) == a : Nat} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/word_bounds.bend doubled_bound @a:Nat -> @bound:Nat -> @bit:Bool -> {Nat.is_lt(Nat.add(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.bit_value(bit), Nat.double(a)), Nat.double(bound)) == Nat.is_lt(a, bound) : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/proofs/word_bounds.bend unsigned_bound @+n:Nat -> @w:Word(n) -> {Nat.is_lt(0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.unsigned(n, w), 0xa7e654f9780078ca65bf9e187da99d3e/proofs/lib/lemmas/spec/numeric.scale_binary(n, 1n)) == True{} : Bool} bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/src/cache.bend without @xs:List<&2, String> -> @+key:String -> List<&2, String> bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/addition.bend bit_conservation @a:Nat -> @+b:Nat -> @x:Bool -> @y:Bool -> @c:Bool -> {Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.bit_value(sum_bit(Bool.full_add(x, y, c))), Nat.double(Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.bit_value(carry_bit(Bool.full_add(x, y, c))), Nat.add(a, b)))) == Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.bit_value(c), Nat.add(Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.bit_value(x), Nat.double(a)), Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.bit_value(y), Nat.double(b)))) : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/addition.bend lift_conservation @+bit:Bool -> @+value:Nat -> @+carry:Nat -> @+total:Nat -> @e:{Nat.add(value, carry) == total : Nat} -> {Nat.add(Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.bit_value(bit), Nat.double(value)), Nat.double(carry)) == Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.bit_value(bit), Nat.double(total)) : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/addition.bend adc_shape @+n:Nat -> @a:Word(n) -> @b:Word(n) -> @pair:Pair(Bool, Bool) -> {Word.adc.con(n, a, b, False{}, pair) == WCon{sum_bit(pair), Word.adc(n, a, b, False{}, carry_bit(pair))} : Word(1n+n)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/addition.bend step @+n:Nat -> @+a:Word(n) -> @+b:Word(n) -> @+x:Bool -> @+y:Bool -> @+c:Bool -> @e:{Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.unsigned(n, Word.adc(n, a, b, False{}, carry_bit(Bool.full_add(x, y, c)))), 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.scale_binary(n, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.bit_value(carry_out(n, a, b, carry_bit(Bool.full_add(x, y, c)))))) == Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.bit_value(carry_bit(Bool.full_add(x, y, c))), Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.unsigned(n, a), 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.unsigned(n, b))) : Nat} -> {Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.unsigned(1n+n, Word.adc(1n+n, WCon{x, a}, WCon{y, b}, False{}, c)), 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.scale_binary(1n+n, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.bit_value(carry_out(1n+n, WCon{x, a}, WCon{y, b}, c)))) == Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.bit_value(c), Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.unsigned(1n+n, WCon{x, a}), 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.unsigned(1n+n, WCon{y, b}))) : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/addition.bend adc_conservation @+n:Nat -> @a:Word(n) -> @b:Word(n) -> @+c:Bool -> {Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.unsigned(n, Word.adc(n, a, b, False{}, c)), 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.scale_binary(n, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.bit_value(carry_out(n, a, b, c)))) == Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.bit_value(c), Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.unsigned(n, a), 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.unsigned(n, b))) : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/addition.bend addition_conservation @+a:Word(64n) -> @+b:Word(64n) -> {Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.unsigned(64n, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/wide.add(a, b)), 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.scale_binary(64n, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.bit_value(carry_out(64n, a, b, False{})))) == Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.unsigned(64n, a), 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.unsigned(64n, b)) : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/counter.bend scale_zero @n:Nat -> {0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.scale_binary(n, 0n) == 0n : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/counter.bend increment_conservation @+n:Nat -> @w:Word(n) -> {Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.unsigned(n, Word.inc(n, w)), 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.scale_binary(n, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.bit_value(carry(n, w)))) == 1n+0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.unsigned(n, w) : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/counter.bend counter_conservation @+w:Word(64n) -> {Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.unsigned(64n, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/wide.inc(w)), 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.scale_binary(64n, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.bit_value(carry(64n, w)))) == 1n+0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.unsigned(64n, w) : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/invariants.bend initial_representation @-V:Data -> @capacity_predecessor:Nat -> {representation(String, string_identity, V, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/cache.init(String, V, 1n+capacity_predecessor)) == True{} : Bool} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/invariants.bend skipped_prefix_rejected {critbit(Nat, MNode{33n, MLeaf{"", 0n}, MLeaf{"aa", 1n}}) == False{} : Bool} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/invariants.bend lookup_preserves_critbit @-V:Data -> @+d:V -> @+m:Map<&2, V> -> @+key:String -> {critbit(V, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/native_map.lookup_map(V, Map.get(V, d, m, key))) == critbit(V, m) : Bool} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend recursive_bit_key @c:Char -> @r:Pair(String, Bool) -> {routed_key(Map.bit.go.rec(c, r)) == SCon{c, routed_key(r)} : String} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend bit_go_preserves_key @key:String -> @+character:Nat -> @+offset:Nat -> {routed_key(Map.bit.go(key, character, offset)) == key : String} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend bit_at_preserves_key @key:String -> @coordinates:Pair(Nat, Nat) -> {routed_key(Map.bit.at(key, coordinates)) == key : String} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend bit_preserves_key @key:String -> @position:Nat -> {routed_key(Map.bit(key, position)) == key : String} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend get_go_bridge @-V:Data -> @d:V -> @+p:Nat -> @lo:Map<&2, V> -> @hi:Map<&2, V> -> @kb:Pair(String, Bool) -> {Map.get.go(V, MNode{p, lo, hi}, d, kb) == get_bit(V, d, lo, hi, p, kb) : Pair(Map<&2, V>, V)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend get_node @-V:Data -> @d:V -> @+p:Nat -> @lo:Map<&2, V> -> @hi:Map<&2, V> -> @key:String -> {Map.get(V, d, MNode{p, lo, hi}, key) == get_bit(V, d, lo, hi, p, Map.bit(key, p)) : Pair(Map<&2, V>, V)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend has_go_bridge @-a:Quant -> @-V:Kind(a) -> @+p:Nat -> @lo:Map -> @hi:Map -> @kb:Pair(String, Bool) -> {Map.has.go(a, V, MNode{p, lo, hi}, kb) == has_bit(a, V, lo, hi, p, kb) : Pair(Map, Bool)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend has_node @-a:Quant -> @-V:Kind(a) -> @+p:Nat -> @lo:Map -> @hi:Map -> @key:String -> {Map.has(a, V, MNode{p, lo, hi}, key) == has_bit(a, V, lo, hi, p, Map.bit(key, p)) : Pair(Map, Bool)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend put_go_bridge @-a:Quant -> @-V:Kind(a) -> @x:V -> @+p:Nat -> @lo:Map -> @hi:Map -> @kb:Pair(String, Bool) -> {Map.put.go(a, V, MNode{p, lo, hi}, x, kb) == put_bit(a, V, x, p, lo, hi, kb) : Map} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend put_node @-a:Quant -> @-V:Kind(a) -> @x:V -> @+p:Nat -> @lo:Map -> @hi:Map -> @key:String -> {Map.put(a, V, MNode{p, lo, hi}, key, x) == put_bit(a, V, x, p, lo, hi, Map.bit(key, p)) : Map} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend pop_go_bridge @-a:Quant -> @-V:Kind(a) -> @+p:Nat -> @lo:Map -> @hi:Map -> @kb:Pair(String, Bool) -> {Map.pop.go(a, V, MNode{p, lo, hi}, kb) == pop_bit(a, V, lo, hi, p, kb) : Pair(Map, Maybe)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend pop_node @-a:Quant -> @-V:Kind(a) -> @+p:Nat -> @lo:Map -> @hi:Map -> @key:String -> {Map.pop(a, V, MNode{p, lo, hi}, key) == pop_bit(a, V, lo, hi, p, Map.bit(key, p)) : Pair(Map, Maybe)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend seek_go_bridge @-a:Quant -> @-V:Kind(a) -> @+p:Nat -> @lo:Map -> @hi:Map -> @kb:Pair(String, Bool) -> {Map.seek.go(a, V, MNode{p, lo, hi}, kb) == seek_bit(a, V, lo, hi, p, kb) : Pair(Map, Pair(String, Maybe<&2, String>))} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend seek_node @-a:Quant -> @-V:Kind(a) -> @+p:Nat -> @lo:Map -> @hi:Map -> @key:String -> {Map.seek(a, V, MNode{p, lo, hi}, key) == seek_bit(a, V, lo, hi, p, Map.bit(key, p)) : Pair(Map, Pair(String, Maybe<&2, String>))} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend ins_splice_bridge @-a:Quant -> @-V:Kind(a) -> @+q:Nat -> @lo:Map -> @hi:Map -> @x:V -> @+p:Nat -> @key:String -> @kb:Pair(String, Bool) -> @hk:{routed_key(kb) == key : String} -> {Map.ins.go(a, V, MNode{q, lo, hi}, x, p, kb, False{}) == Map.ins.splice(a, V, p, key, x, MNode{q, lo, hi}) : Map} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend ins_deep_bridge @-a:Quant -> @-V:Kind(a) -> @+q:Nat -> @lo:Map -> @hi:Map -> @x:V -> @+p:Nat -> @kb:Pair(String, Bool) -> {Map.ins.go(a, V, MNode{q, lo, hi}, x, p, kb, True{}) == ins_deep(a, V, x, lo, hi, p, q, kb) : Map} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend ins_t @-a:Quant -> @-V:Kind(a) -> @+pos:Nat -> @lo:Map -> @hi:Map -> @+key:String -> @x:V -> @+p:Nat -> @t:Bool -> {Map.ins.go(a, V, MNode{pos, lo, hi}, x, p, Map.bit(key, pos), t) == ins_if(a, V, key, x, lo, hi, pos, p, t) : Map} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_bridge.bend ins_node @-a:Quant -> @-V:Kind(a) -> @+pos:Nat -> @lo:Map -> @hi:Map -> @+key:String -> @x:V -> @+p:Nat -> {Map.ins(a, V, MNode{pos, lo, hi}, key, x, p) == ins_if(a, V, key, x, lo, hi, pos, p, Nat.is_lt(pos, p)) : Map} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend add_zero @n:Nat -> {Nat.add(n, 0n) == n : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend add_commute @a:Nat -> @+b:Nat -> {Nat.add(a, b) == Nat.add(b, a) : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend add_sub_bound @n:Nat -> @m:Nat -> @+k:Nat -> @bound:{Nat.is_le(m, n) == True{} : Bool} -> @inside:{Nat.is_le(k, Nat.sub(n, m)) == True{} : Bool} -> {Nat.is_le(Nat.add(m, k), n) == True{} : Bool} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend sub_from_add @n:Nat -> @k:Nat -> @+m:Nat -> @bound:{Nat.is_le(Nat.add(k, m), n) == True{} : Bool} -> {Nat.is_le(m, Nat.sub(n, k)) == True{} : Bool} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend add_complement @n:Nat -> @m:Nat -> @bound:{Nat.is_le(m, n) == True{} : Bool} -> {Nat.add(m, Nat.sub(n, m)) == n : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend strict_successor @a:Nat -> @b:Nat -> @strict:{Nat.is_lt(a, b) == True{} : Bool} -> {Nat.is_le(1n+a, b) == True{} : Bool} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend less_is_le @a:Nat -> @b:Nat -> @e:{Nat.is_lt(a, b) == True{} : Bool} -> {Nat.is_le(a, b) == True{} : Bool} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend lift_split @+limit:Nat -> @+offset:Nat -> @split:Split(limit, offset) -> Split(1n+limit, 1n+offset) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_difference_order.bend split_offset @limit:Nat -> @offset:Nat -> Split(limit, offset) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_index.bend quotient_translation @n:Nat -> @m:Nat -> @+q:Nat -> @r:Nat -> {Nat.divmod.go(n, m, 1n+q, r) == next_quotient(Nat.divmod.go(n, m, q, r)) : Pair(Nat, Nat)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_index.bend character_stride @position:Nat -> {Nat.divmod(Nat.add(33n, position), 33n) == next_quotient(Nat.divmod(position, 33n)) : Pair(Nat, Nat)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_index.bend bit_at_next @h:Char -> @tail:String -> @pair:Pair(Nat, Nat) -> {Map.bit.at(SCon{h, tail}, next_quotient(pair)) == Map.bit.go.rec(h, Map.bit.at(tail, pair)) : Pair(String, Bool)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_index.bend native_character_stride @+h:Char -> @+tail:String -> @+position:Nat -> {Map.bit(SCon{h, tail}, Nat.add(33n, position)) == Map.bit.go.rec(h, Map.bit(tail, position)) : Pair(String, Bool)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_index.bend add_right_successor @a:Nat -> @+b:Nat -> {Nat.add(a, 1n+b) == 1n+Nat.add(a, b) : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_index.bend division_no_wrap @n:Nat -> @m:Nat -> @+q:Nat -> @+r:Nat -> @bound:{Nat.is_le(n, m) == True{} : Bool} -> {Nat.divmod.go(n, m, q, r) == (q, Nat.add(n, r)) : Pair(Nat, Nat)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_index.bend first_character_division @+position:Nat -> @bound:{Nat.is_le(position, 32n) == True{} : Bool} -> {Nat.divmod(position, 33n) == (0n, position) : Pair(Nat, Nat)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_index.bend native_first_character @+head:Char -> @+tail:String -> @+position:Nat -> @bound:{Nat.is_le(position, 32n) == True{} : Bool} -> {Map.bit(SCon{head, tail}, position) == Map.bit.go.chr(tail, Map.bit.chr(head, position)) : Pair(String, Bool)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend route_pair @r:Pair(String, Bool) -> {r == (0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/native_map.routed_key(r), route_bit(r)) : Pair(String, Bool)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend route_shape @+key:String -> @+position:Nat -> {Map.bit(key, position) == (key, route_bit(Map.bit(key, position))) : Pair(String, Bool)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend low_value @-V:Data -> @p:Nat -> @hi:Map<&2, V> -> @r:Pair(Map<&2, V>, V) -> {value(V, Map.lo(&2, V, V, p, hi, r)) == value(V, r) : V} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend high_value @-V:Data -> @p:Nat -> @lo:Map<&2, V> -> @r:Pair(Map<&2, V>, V) -> {value(V, Map.hi(&2, V, V, p, lo, r)) == value(V, r) : V} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend node_left @-V:Data -> @+d:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @e:{Map.bit(key, p) == (key, False{}) : Pair(String, Bool)} -> {lookup(V, d, MNode{p, lo, hi}, key) == lookup(V, d, lo, key) : V} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend node_right @-V:Data -> @+d:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @e:{Map.bit(key, p) == (key, True{}) : Pair(String, Bool)} -> {lookup(V, d, MNode{p, lo, hi}, key) == lookup(V, d, hi, key) : V} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend leaf_same @-V:Data -> @d:V -> @key:String -> @x:V -> {lookup(V, d, MLeaf{key, x}, key) == x : V} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend splice_same_bit @-V:Data -> @+d:V -> @+x:V -> @+rest:Map<&2, V> -> @+p:Nat -> @+key:String -> @bit:Bool -> @e:{Map.bit(key, p) == (key, bit) : Pair(String, Bool)} -> {lookup(V, d, Map.ins.splice.bit(&2, V, x, rest, p, (key, bit)), key) == x : V} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend splice_same @-V:Data -> @d:V -> @x:V -> @rest:Map<&2, V> -> @+p:Nat -> @+key:String -> {lookup(V, d, Map.ins.splice(&2, V, p, key, x, rest), key) == x : V} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend deep_same_bit @-V:Data -> @+d:V -> @+x:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+q:Nat -> @+key:String -> @bit:Bool -> @e:{Map.bit(key, q) == (key, bit) : Pair(String, Bool)} -> @lp:{lookup(V, d, Map.ins(&2, V, lo, key, x, p), key) == x : V} -> @hp:{lookup(V, d, Map.ins(&2, V, hi, key, x, p), key) == x : V} -> {lookup(V, d, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_bridge.ins_deep(&2, V, x, lo, hi, p, q, (key, bit)), key) == x : V} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend insertion_branch_same @-V:Data -> @d:V -> @x:V -> @lo:Map<&2, V> -> @hi:Map<&2, V> -> @p:Nat -> @+q:Nat -> @+key:String -> @descend:Bool -> @lp:{lookup(V, d, Map.ins(&2, V, lo, key, x, p), key) == x : V} -> @hp:{lookup(V, d, Map.ins(&2, V, hi, key, x, p), key) == x : V} -> {lookup(V, d, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_bridge.ins_if(&2, V, key, x, lo, hi, q, p, descend), key) == x : V} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend insertion_same @-V:Data -> @+d:V -> @m:Map<&2, V> -> @+key:String -> @+x:V -> @+p:Nat -> {lookup(V, d, Map.ins(&2, V, m, key, x, p), key) == x : V} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend seek_low_found @-V:Data -> @p:Nat -> @hi:Map<&2, V> -> @r:Pair(Map<&2, V>, Pair(String, Maybe<&2, String>)) -> {seek_found(V, Map.lo(&2, V, Pair(String, Maybe<&2, String>), p, hi, r)) == seek_found(V, r) : Maybe<&2, String>} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend seek_high_found @-V:Data -> @p:Nat -> @lo:Map<&2, V> -> @r:Pair(Map<&2, V>, Pair(String, Maybe<&2, String>)) -> {seek_found(V, Map.hi(&2, V, Pair(String, Maybe<&2, String>), p, lo, r)) == seek_found(V, r) : Maybe<&2, String>} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend seek_left @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @e:{Map.bit(key, p) == (key, False{}) : Pair(String, Bool)} -> {seek_found(V, Map.seek(&2, V, MNode{p, lo, hi}, key)) == seek_found(V, Map.seek(&2, V, lo, key)) : Maybe<&2, String>} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend seek_right @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @e:{Map.bit(key, p) == (key, True{}) : Pair(String, Bool)} -> {seek_found(V, Map.seek(&2, V, MNode{p, lo, hi}, key)) == seek_found(V, Map.seek(&2, V, hi, key)) : Maybe<&2, String>} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend replace_left @-V:Data -> @d:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @+x:V -> @+e:{Map.bit(key, p) == (key, False{}) : Pair(String, Bool)} -> {lookup(V, d, Map.put(&2, V, MNode{p, lo, hi}, key, x), key) == lookup(V, d, Map.put(&2, V, lo, key, x), key) : V} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend replace_right @-V:Data -> @d:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @+x:V -> @+e:{Map.bit(key, p) == (key, True{}) : Pair(String, Bool)} -> {lookup(V, d, Map.put(&2, V, MNode{p, lo, hi}, key, x), key) == lookup(V, d, Map.put(&2, V, hi, key, x), key) : V} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend certificate_left @-V:Data -> @+d:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @+x:V -> @found:Maybe<&2, String> -> @e:{Map.bit(key, p) == (key, False{}) : Pair(String, Bool)} -> @cp:replacement_certificate(V, d, lo, key, x, found) -> replacement_certificate(V, d, MNode{p, lo, hi}, key, x, found) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend certificate_right @-V:Data -> @+d:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @+x:V -> @found:Maybe<&2, String> -> @e:{Map.bit(key, p) == (key, True{}) : Pair(String, Bool)} -> @cp:replacement_certificate(V, d, hi, key, x, found) -> replacement_certificate(V, d, MNode{p, lo, hi}, key, x, found) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend certificate_branch @-V:Data -> @d:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @x:V -> @bit:Bool -> @+e:{Map.bit(key, p) == (key, bit) : Pair(String, Bool)} -> @lp:replacement_certificate(V, d, lo, key, x, seek_found(V, Map.seek(&2, V, lo, key))) -> @hp:replacement_certificate(V, d, hi, key, x, seek_found(V, Map.seek(&2, V, hi, key))) -> replacement_certificate(V, d, MNode{p, lo, hi}, key, x, seek_found(V, Map.seek(&2, V, MNode{p, lo, hi}, key))) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend replacement_at_seek @-V:Data -> @+d:V -> @m:Map<&2, V> -> @+key:String -> @+x:V -> replacement_certificate(V, d, m, key, x, seek_found(V, Map.seek(&2, V, m, key))) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend seek_low_shape @-V:Data -> @p:Nat -> @lo:Map<&2, V> -> @hi:Map<&2, V> -> @key:String -> @r:Pair(Map<&2, V>, Pair(String, Maybe<&2, String>)) -> @e:{r == (lo, key, seek_found(V, r)) : Pair(Map<&2, V>, Pair(String, Maybe<&2, String>))} -> {Map.lo(&2, V, Pair(String, Maybe<&2, String>), p, hi, r) == (MNode{p, lo, hi}, key, seek_found(V, Map.lo(&2, V, Pair(String, Maybe<&2, String>), p, hi, r))) : Pair(Map<&2, V>, Pair(String, Maybe<&2, String>))} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend seek_high_shape @-V:Data -> @p:Nat -> @lo:Map<&2, V> -> @hi:Map<&2, V> -> @key:String -> @r:Pair(Map<&2, V>, Pair(String, Maybe<&2, String>)) -> @e:{r == (hi, key, seek_found(V, r)) : Pair(Map<&2, V>, Pair(String, Maybe<&2, String>))} -> {Map.hi(&2, V, Pair(String, Maybe<&2, String>), p, lo, r) == (MNode{p, lo, hi}, key, seek_found(V, Map.hi(&2, V, Pair(String, Maybe<&2, String>), p, lo, r))) : Pair(Map<&2, V>, Pair(String, Maybe<&2, String>))} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend seek_branch_shape @-V:Data -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @+key:String -> @+bit:Bool -> @e:{Map.bit(key, p) == (key, bit) : Pair(String, Bool)} -> @lp:{Map.seek(&2, V, lo, key) == (lo, key, seek_found(V, Map.seek(&2, V, lo, key))) : Pair(Map<&2, V>, Pair(String, Maybe<&2, String>))} -> @hp:{Map.seek(&2, V, hi, key) == (hi, key, seek_found(V, Map.seek(&2, V, hi, key))) : Pair(Map<&2, V>, Pair(String, Maybe<&2, String>))} -> {Map.seek(&2, V, MNode{p, lo, hi}, key) == (MNode{p, lo, hi}, key, seek_found(V, Map.seek(&2, V, MNode{p, lo, hi}, key))) : Pair(Map<&2, V>, Pair(String, Maybe<&2, String>))} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend seek_shape @-V:Data -> @m:Map<&2, V> -> @+key:String -> {Map.seek(&2, V, m, key) == (m, key, seek_found(V, Map.seek(&2, V, m, key))) : Pair(Map<&2, V>, Pair(String, Maybe<&2, String>))} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend set_comparison_case @-V:Data -> @+d:V -> @m:Map<&2, V> -> @+key:String -> @+stored:String -> @x:V -> @c:Cmp -> @e:{0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/native_map.comparison_tag(String, String.cmp(key, stored)) == c : Cmp} -> @cp:(@equal:{key == stored : String} -> {lookup(V, d, Map.put(&2, V, m, key, x), key) == x : V}) -> {lookup(V, d, Map.set.fin.go(&2, V, m, key, x, ((key, stored), c)), key) == x : V} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend set_found_case @-V:Data -> @d:V -> @m:Map<&2, V> -> @+key:String -> @+stored:String -> @x:V -> @cp:(@equal:{key == stored : String} -> {lookup(V, d, Map.put(&2, V, m, key, x), key) == x : V}) -> {lookup(V, d, Map.set.fin(&2, V, m, key, x, key, stored), key) == x : V} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend set_seek_case @-V:Data -> @d:V -> @m:Map<&2, V> -> @key:String -> @x:V -> @found:Maybe<&2, String> -> @cp:replacement_certificate(V, d, m, key, x, found) -> {lookup(V, d, Map.set.go(&2, V, x, (m, key, found)), key) == x : V} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_insert.bend set_same @-V:Data -> @+d:V -> @+m:Map<&2, V> -> @+key:String -> @+x:V -> {lookup(V, d, Map.set(&2, V, m, key, x), key) == x : V} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend leaf_comparison @-V:Data -> @+key:String -> @+stored:String -> @item:Maybe<&2, V> -> @cmp:Cmp -> @e:{0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/string_compare.comparison_tag(String, String.cmp(key, stored)) == cmp : Cmp} -> certificate(V, MLeaf{stored, item}, key, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_insert.value(Maybe<&2, V>, Map.get.leaf(Maybe<&2, V>, None{}, item, ((key, stored), cmp)))) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend leaf_lookup @-V:Data -> @+key:String -> @+stored:String -> @+item:Maybe<&2, V> -> certificate(V, MLeaf{stored, item}, key, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, MLeaf{stored, item}, key)) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend lift_left @-V:Data -> @lo:Map<&2, Maybe<&2, V>> -> @hi:Map<&2, Maybe<&2, V>> -> @p:Nat -> @key:String -> @found:Maybe<&2, V> -> @cp:certificate(V, lo, key, found) -> certificate(V, MNode{p, lo, hi}, key, found) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend lift_right @-V:Data -> @lo:Map<&2, Maybe<&2, V>> -> @hi:Map<&2, Maybe<&2, V>> -> @p:Nat -> @key:String -> @found:Maybe<&2, V> -> @cp:certificate(V, hi, key, found) -> certificate(V, MNode{p, lo, hi}, key, found) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend branch @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+p:Nat -> @+key:String -> @bit:Bool -> @e:{Map.bit(key, p) == (key, bit) : Pair(String, Bool)} -> @lp:certificate(V, lo, key, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, lo, key)) -> @hp:certificate(V, hi, key, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, hi, key)) -> certificate(V, MNode{p, lo, hi}, key, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, MNode{p, lo, hi}, key)) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend lookup_certificate @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+key:String -> certificate(V, tree, key, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key)) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend returned_value_is_stored @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @value:V -> @found:{0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == Some{value} : Maybe<&2, V>} -> leaf(V, tree, key, value) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend accumulator_included @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+acc:List<&2, Sigma<&2, &2, String, _ => Maybe<&2, V>>> -> @+key:String -> @+value:V -> @member:listed(V, acc, key, value) -> listed(V, Map.to_list.go(&2, Maybe<&2, V>, tree, acc), key, value) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend leaf_enumerated @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+acc:List<&2, Sigma<&2, &2, String, _ => Maybe<&2, V>>> -> @+key:String -> @+value:V -> @member:leaf(V, tree, key, value) -> listed(V, Map.to_list.go(&2, Maybe<&2, V>, tree, acc), key, value) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_lookup.bend returned_value_enumerated @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+value:V -> @found:{0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == Some{value} : Maybe<&2, V>} -> listed(V, Map.to_list(&2, Maybe<&2, V>, tree), key, value) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend false_true @e:{False{} == True{} : Bool} -> Empty bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend and_left @a:Bool -> @b:Bool -> @e:{Bool.and(a, b) == True{} : Bool} -> {a == True{} : Bool} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend and_right @a:Bool -> @b:Bool -> @e:{Bool.and(a, b) == True{} : Bool} -> {b == True{} : Bool} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend equal_bit @bit:Bool -> @side:Bool -> @e:{Bool.not(Bool.xor(bit, side)) == True{} : Bool} -> {bit == side : Bool} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend route_projection @r:Pair(String, Bool) -> {0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/invariants.bit_value(r) == 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_insert.route_bit(r) : Bool} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend routed_certificate @-V:Data -> @tree:Map<&2, V> -> @+pos:Nat -> @+side:Bool -> @+e:{0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/invariants.routed(V, tree, pos, side) == True{} : Bool} -> routed(V, tree, pos, side) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend member_routed @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+value:V -> @+pos:Nat -> @+side:Bool -> @routes:routed(Maybe<&2, V>, tree, pos, side) -> @member:0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_lookup.leaf(V, tree, key, value) -> {Map.bit(key, pos) == (key, side) : Pair(String, Bool)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend duplicate_member @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+value:V -> @member:0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_lookup.leaf(V, tree, key, value) -> Pair(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_lookup.leaf(V, tree, key, value), 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_lookup.leaf(V, tree, key, value)) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend lookup_left @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+p:Nat -> @+key:String -> @+value:V -> @routes:routed(Maybe<&2, V>, lo, p, False{}) -> @induction:(@member:0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_lookup.leaf(V, lo, key, value) -> {0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, lo, key) == Some{value} : Maybe<&2, V>}) -> @copies:Pair(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_lookup.leaf(V, lo, key, value), 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_lookup.leaf(V, lo, key, value)) -> {0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, MNode{p, lo, hi}, key) == Some{value} : Maybe<&2, V>} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend lookup_right @-V:Data -> @+lo:Map<&2, Maybe<&2, V>> -> @+hi:Map<&2, Maybe<&2, V>> -> @+p:Nat -> @+key:String -> @+value:V -> @routes:routed(Maybe<&2, V>, hi, p, True{}) -> @induction:(@member:0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_lookup.leaf(V, hi, key, value) -> {0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, hi, key) == Some{value} : Maybe<&2, V>}) -> @copies:Pair(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_lookup.leaf(V, hi, key, value), 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_lookup.leaf(V, hi, key, value)) -> {0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, MNode{p, lo, hi}, key) == Some{value} : Maybe<&2, V>} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend member_lookup @-V:Data -> @tree:Map<&2, Maybe<&2, V>> -> @+key:String -> @+value:V -> @invariant:valid(Maybe<&2, V>, tree) -> @member:0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_lookup.leaf(V, tree, key, value) -> {0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == Some{value} : Maybe<&2, V>} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend critbit_certificate @-V:Data -> @tree:Map<&2, V> -> @+e:{0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/invariants.critbit(V, tree) == True{} : Bool} -> valid(V, tree) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/map_routing.bend critbit_member_lookup @-V:Data -> @+tree:Map<&2, Maybe<&2, V>> -> @key:String -> @value:V -> @invariant:{0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/invariants.critbit(Maybe<&2, V>, tree) == True{} : Bool} -> @member:0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_lookup.leaf(V, tree, key, value) -> {0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_insert.lookup(Maybe<&2, V>, None{}, tree, key) == Some{value} : Maybe<&2, V>} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend empty_lookup @-V:Data -> @d:V -> @k:String -> {Map.get(V, d, Map.new(&2, V), k) == (MTip{}, d) : Pair(Map<&2, V>, V)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend empty_set @-V:Data -> @k:String -> @v:V -> {Map.set(&2, V, Map.new(&2, V), k, v) == MLeaf{k, v} : Map<&2, V>} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend empty_delete @-V:Data -> @k:String -> {Map.del(&2, V, Map.new(&2, V), k) == MTip{} : Map<&2, V>} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend empty_has @-V:Data -> @k:String -> {Map.has(&2, V, Map.new(&2, V), k) == (MTip{}, False{}) : Pair(Map<&2, V>, Bool)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend zero_character_presence @tail:String -> {Map.bit.go(SCon{'\0', tail}, 0n, 0n) == (SCon{'\0', tail}, True{}) : Pair(String, Bool)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend empty_presence {Map.bit.go("", 0n, 0n) == ("", False{}) : Pair(String, Bool)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend boolean_compare_self @b:Bool -> {Bool.cmp(b, b) == EQ{} : Cmp} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend word_compare_self @n:Nat -> @w:Word(n) -> {Word.cmp(n, w, w) == EQ{} : Cmp} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend character_compare_self @c:Char -> {Char.cmp(c, c) == ((c, c), EQ{}) : Pair(Pair(Char, Char), Cmp)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_compare_self @s:String -> {String.cmp(s, s) == ((s, s), EQ{}) : Pair(Pair(String, String), Cmp)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend singleton_get @-V:Data -> @d:V -> @k:String -> @v:V -> {Map.get(V, d, MLeaf{k, v}, k) == (MLeaf{k, v}, v) : Pair(Map<&2, V>, V)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend singleton_update @-V:Data -> @k:String -> @old:V -> @value:V -> {Map.set(&2, V, MLeaf{k, old}, k, value) == MLeaf{k, value} : Map<&2, V>} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend singleton_delete @-V:Data -> @k:String -> @v:V -> {Map.del(&2, V, MLeaf{k, v}, k) == MTip{} : Map<&2, V>} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend recursive_bit_key @c:Char -> @r:Pair(String, Bool) -> {routed_key(Map.bit.go.rec(c, r)) == SCon{c, routed_key(r)} : String} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend bit_go_preserves_key @key:String -> @+character:Nat -> @+offset:Nat -> {routed_key(Map.bit.go(key, character, offset)) == key : String} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend bit_at_preserves_key @key:String -> @coordinates:Pair(Nat, Nat) -> {routed_key(Map.bit.at(key, coordinates)) == key : String} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend bit_preserves_key @key:String -> @position:Nat -> {routed_key(Map.bit(key, position)) == key : String} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend word_comparison_step @n:Nat -> @a:Word(n) -> @b:Word(n) -> @c:Cmp -> @x:Bool -> @y:Bool -> @proof:comparison_identity(Word(n), a, b, c) -> comparison_identity(Word(1n+n), WCon{x, a}, WCon{y, b}, Word.cmp.fin(x, y, c)) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend word_comparison_identity @n:Nat -> @a:Word(n) -> @b:Word(n) -> comparison_identity(Word(n), a, b, Word.cmp(n, a, b)) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend comparison_lift @-A:Type -> @-B:Type -> @f:(@_:A -> B) -> @a:A -> @b:A -> @c:Cmp -> @proof:comparison_identity(A, a, b, c) -> comparison_identity(B, f(a), f(b), c) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend character_comparison_identity @a:Char -> @b:Char -> comparison_result_identity(Char, Char.cmp(a, b)) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_comparison_rec_identity @h:Char -> @r:Pair(Pair(String, String), Cmp) -> @proof:comparison_result_identity(String, r) -> comparison_result_identity(String, String.cmp.rec(h, h, r)) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_comparison_fin_identity @t1:String -> @t2:String -> @hc:Pair(Pair(Char, Char), Cmp) -> @hp:comparison_result_identity(Char, hc) -> @tp:comparison_result_identity(String, String.cmp(t1, t2)) -> comparison_result_identity(String, String.cmp.fin(t1, t2, hc)) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_comparison_identity @a:String -> @b:String -> comparison_result_identity(String, String.cmp(a, b)) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_comparison_shape_step @h1:Char -> @h2:Char -> @t1:String -> @t2:String -> @c:Cmp -> @tp:{String.cmp(t1, t2) == ((t1, t2), comparison_tag(String, String.cmp(t1, t2))) : Pair(Pair(String, String), Cmp)} -> {String.cmp.fin(t1, t2, ((h1, h2), c)) == ((SCon{h1, t1}, SCon{h2, t2}), comparison_tag(String, String.cmp.fin(t1, t2, ((h1, h2), c)))) : Pair(Pair(String, String), Cmp)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_comparison_shape @a:String -> @b:String -> {String.cmp(a, b) == ((a, b), comparison_tag(String, String.cmp(a, b))) : Pair(Pair(String, String), Cmp)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_comparison_original_identity @+a:String -> @+b:String -> comparison_identity(String, a, b, comparison_tag(String, String.cmp(a, b))) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_equal_from_comparison @a:String -> @b:String -> @e:{comparison_tag(String, String.cmp(a, b)) == EQ{} : Cmp} -> {a == b : String} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend string_equal_comparison @a:String -> @b:String -> @e:{a == b : String} -> {String.cmp(a, b) == ((a, b), EQ{}) : Pair(Pair(String, String), Cmp)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend difference_empty_left @h:Char -> @tail:String -> {Map.diff("", SCon{h, tail}) == 0n : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend difference_empty_right @h:Char -> @tail:String -> {Map.diff(SCon{h, tail}, "") == 0n : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend difference_common_character @h:Char -> @a:String -> @b:String -> {Map.diff(SCon{h, a}, SCon{h, b}) == Nat.add(33n, Map.diff(a, b)) : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend difference_empty_presence @h:Char -> @tail:String -> {Map.bit.go(SCon{h, tail}, Map.diff("", SCon{h, tail}), 0n) == (SCon{h, tail}, True{}) : Pair(String, Bool)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend lookup_leaf_preserves @-V:Data -> @d:V -> @v:V -> @key:String -> @stored:String -> @c:Cmp -> {lookup_map(V, Map.get.leaf(V, d, v, ((key, stored), c))) == MLeaf{stored, v} : Map<&2, V>} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend lookup_lo_projection @-V:Data -> @p:Nat -> @hi:Map<&2, V> -> @r:Pair(Map<&2, V>, V) -> {lookup_map(V, Map.lo(&2, V, V, p, hi, r)) == MNode{p, lookup_map(V, r), hi} : Map<&2, V>} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend lookup_hi_projection @-V:Data -> @p:Nat -> @lo:Map<&2, V> -> @r:Pair(Map<&2, V>, V) -> {lookup_map(V, Map.hi(&2, V, V, p, lo, r)) == MNode{p, lo, lookup_map(V, r)} : Map<&2, V>} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend lookup_branch_preserves @-V:Data -> @+d:V -> @+lo:Map<&2, V> -> @+hi:Map<&2, V> -> @+p:Nat -> @kb:Pair(String, Bool) -> @lp:(@key:String -> {lookup_map(V, Map.get(V, d, lo, key)) == lo : Map<&2, V>}) -> @hp:(@key:String -> {lookup_map(V, Map.get(V, d, hi, key)) == hi : Map<&2, V>}) -> {lookup_map(V, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/proofs/map_bridge.get_bit(V, d, lo, hi, p, kb)) == MNode{p, lo, hi} : Map<&2, V>} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend lookup_preserves_map @-V:Data -> @+d:V -> @m:Map<&2, V> -> @+key:String -> {lookup_map(V, Map.get(V, d, m, key)) == m : Map<&2, V>} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend natural_add_associative @a:Nat -> @b:Nat -> @c:Nat -> {Nat.add(a, Nat.add(b, c)) == Nat.add(Nat.add(a, b), c) : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend natural_add_right_zero @a:Nat -> {Nat.add(a, 0n) == a : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend keys_accumulator_size @-V:Data -> @m:Map<&2, V> -> @+acc:List<&2, String> -> {List.length(&2, String, Map.keys.go(&2, V, m, acc)) == Nat.add(Map.size(&2, V, m), List.length(&2, String, acc)) : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend keys_size @-V:Data -> @+m:Map<&2, V> -> {List.length(&2, String, Map.keys(&2, V, m)) == Map.size(&2, V, m) : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend entries_accumulator_size @-V:Data -> @m:Map<&2, V> -> @+acc:List<&2, Sigma<&2, &2, String, _ => V>> -> {List.length(&2, Sigma<&2, &2, String, _ => V>, Map.to_list.go(&2, V, m, acc)) == Nat.add(Map.size(&2, V, m), List.length(&2, Sigma<&2, &2, String, _ => V>, acc)) : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/native_map.bend entries_size @-V:Data -> @+m:Map<&2, V> -> {List.length(&2, Sigma<&2, &2, String, _ => V>, Map.to_list(&2, V, m)) == Map.size(&2, V, m) : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend increment_maximum_wraps @n:Nat -> {Word.inc(n, Word.not(n, Word.zero(n))) == Word.zero(n) : Word(n)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend zero_detected @n:Nat -> {0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/wide.is_zero(n, Word.zero(n)) == True{} : Bool} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend zero_sign @n:Nat -> {0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/wide.last(n, Word.zero(n)) == False{} : Bool} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend divide_zero @+n:Nat -> {0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/wide.div_million(n, Word.zero(n)) == 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/wide.Div{Word.zero(n), 0} : 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/wide.Division} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend immortal_duration @now:0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/types/model.Int64 -> {0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/time.deadline(now, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/types/model.I64{Word.zero(64n)}) == 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/types/model.I64{Word.zero(64n)} : 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/types/model.Int64} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend immortal_deadline @now:0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/types/model.Int64 -> {0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/time.expired(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/types/model.I64{Word.zero(64n)}, now) == False{} : Bool} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend counter_rollover {0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/wide.inc(Word.not(64n, Word.zero(64n))) == Word.zero(64n) : Word(64n)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend split_join @+n:Nat -> @+m:Nat -> @a:Word(n) -> @b:Word(m) -> {0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/wide.split(n, m, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/wide.join(n, m, a, b)) == 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/wide.Split{a, b} : 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/wide.Parts} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend pack_roundtrip @low:U32 -> @high:U32 -> {0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/wide.unpack(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/wide.pack(low, high)) == (low, high) : Pair(U32, U32)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend rejoin_cons @+n:Nat -> @+m:Nat -> @h:Bool -> @parts:0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/wide.Parts -> {rejoin(1n+n, m, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/wide.split_cons(n, m, h, parts)) == WCon{h, rejoin(n, m, parts)} : Word(Nat.add(1n+n, m))} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend join_split @+n:Nat -> @+m:Nat -> @w:Word(Nat.add(n, m)) -> {rejoin(n, m, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/wide.split(n, m, w)) == w : Word(Nat.add(n, m))} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend comparison_low_zero_ge @c:Cmp -> @b:Bool -> {Cmp.is_ge(Word.cmp.fin(b, False{}, c)) == Cmp.is_ge(c) : Bool} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend sign_threshold_correspondence @n:Nat -> @w:Word(1n+n) -> {Cmp.is_ge(Word.cmp(1n+n, w, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.sign_threshold(n))) == 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/wide.last(1n+n, w) : Bool} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend comparison_low_zero_eq @c:Cmp -> @b:Bool -> {Cmp.is_eq(Word.cmp.fin(b, False{}, c)) == Bool.and(Bool.not(b), Cmp.is_eq(c)) : Bool} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend zero_comparison_correspondence @+n:Nat -> @w:Word(n) -> {Cmp.is_eq(Word.cmp(n, w, Word.zero(n))) == 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/wide.is_zero(n, w) : Bool} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend signed_order_branches @a:Word(64n) -> @b:Word(64n) -> @sa:Bool -> @sb:Bool -> {0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/wide.signed_order(a, b, sa, sb) == 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.order(a, b, sa, sb) : Bool} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend signed_order_refines @+a:Word(64n) -> @+b:Word(64n) -> {0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/wide.le(a, b) == 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.order(a, b, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.negative(a), 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.negative(b)) : Bool} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend expiration_sentinel_branch @d:0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/types/model.Int64 -> @now:0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/types/model.Int64 -> @immortal:Bool -> {0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/time.expired_choose(d, now, immortal) == Bool.and(Bool.not(immortal), 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/time.le(d, now)) : Bool} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend expiration_refines @deadline:0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/types/model.Int64 -> @now:0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/types/model.Int64 -> {0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/time.expired(deadline, now) == 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.expired(deadline, now) : Bool} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend double_add @a:Nat -> @b:Nat -> {Nat.double(Nat.add(a, b)) == Nat.add(Nat.double(a), Nat.double(b)) : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend primitive_word_interpretation @+n:Nat -> @w:Word(n) -> {Word.to_nat(n, w) == 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.unsigned(n, w) : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend join_interpretation @+n:Nat -> @+m:Nat -> @a:Word(n) -> @+b:Word(m) -> {0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.unsigned(Nat.add(n, m), 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/wide.join(n, m, a, b)) == Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.unsigned(n, a), 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.scale_binary(n, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.unsigned(m, b))) : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/numeric.bend pack_interpretation @low:U32 -> @high:U32 -> {0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.unsigned(64n, 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/src/wide.pack(low, high)) == Nat.add(U32.to_nat(low), 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.scale_binary(32n, U32.to_nat(high))) : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend boolean_compare_self @b:Bool -> {Bool.cmp(b, b) == EQ{} : Cmp} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend word_compare_self @n:Nat -> @w:Word(n) -> {Word.cmp(n, w, w) == EQ{} : Cmp} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend character_compare_self @c:Char -> {Char.cmp(c, c) == ((c, c), EQ{}) : Pair(Pair(Char, Char), Cmp)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_compare_self @s:String -> {String.cmp(s, s) == ((s, s), EQ{}) : Pair(Pair(String, String), Cmp)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend word_comparison_step @n:Nat -> @a:Word(n) -> @b:Word(n) -> @c:Cmp -> @x:Bool -> @y:Bool -> @proof:comparison_identity(Word(n), a, b, c) -> comparison_identity(Word(1n+n), WCon{x, a}, WCon{y, b}, Word.cmp.fin(x, y, c)) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend word_comparison_identity @n:Nat -> @a:Word(n) -> @b:Word(n) -> comparison_identity(Word(n), a, b, Word.cmp(n, a, b)) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend comparison_lift @-A:Type -> @-B:Type -> @f:(@_:A -> B) -> @a:A -> @b:A -> @c:Cmp -> @proof:comparison_identity(A, a, b, c) -> comparison_identity(B, f(a), f(b), c) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend character_comparison_identity @a:Char -> @b:Char -> comparison_result_identity(Char, Char.cmp(a, b)) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_comparison_rec_identity @h:Char -> @r:Pair(Pair(String, String), Cmp) -> @proof:comparison_result_identity(String, r) -> comparison_result_identity(String, String.cmp.rec(h, h, r)) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_comparison_fin_identity @t1:String -> @t2:String -> @hc:Pair(Pair(Char, Char), Cmp) -> @hp:comparison_result_identity(Char, hc) -> @tp:comparison_result_identity(String, String.cmp(t1, t2)) -> comparison_result_identity(String, String.cmp.fin(t1, t2, hc)) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_comparison_identity @a:String -> @b:String -> comparison_result_identity(String, String.cmp(a, b)) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_comparison_shape_step @h1:Char -> @h2:Char -> @t1:String -> @t2:String -> @c:Cmp -> @tp:{String.cmp(t1, t2) == ((t1, t2), comparison_tag(String, String.cmp(t1, t2))) : Pair(Pair(String, String), Cmp)} -> {String.cmp.fin(t1, t2, ((h1, h2), c)) == ((SCon{h1, t1}, SCon{h2, t2}), comparison_tag(String, String.cmp.fin(t1, t2, ((h1, h2), c)))) : Pair(Pair(String, String), Cmp)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_comparison_shape @a:String -> @b:String -> {String.cmp(a, b) == ((a, b), comparison_tag(String, String.cmp(a, b))) : Pair(Pair(String, String), Cmp)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_comparison_original_identity @+a:String -> @+b:String -> comparison_identity(String, a, b, comparison_tag(String, String.cmp(a, b))) bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_equal_from_comparison @a:String -> @b:String -> @e:{comparison_tag(String, String.cmp(a, b)) == EQ{} : Cmp} -> {a == b : String} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend string_equal_comparison @a:String -> @b:String -> @e:{a == b : String} -> {String.cmp(a, b) == ((a, b), EQ{}) : Pair(Pair(String, String), Cmp)} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend natural_add_associative @a:Nat -> @b:Nat -> @c:Nat -> {Nat.add(a, Nat.add(b, c)) == Nat.add(Nat.add(a, b), c) : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/string_compare.bend natural_add_right_zero @a:Nat -> {Nat.add(a, 0n) == a : Nat} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/word_bounds.bend doubled_bound @a:Nat -> @bound:Nat -> @bit:Bool -> {Nat.is_lt(Nat.add(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.bit_value(bit), Nat.double(a)), Nat.double(bound)) == Nat.is_lt(a, bound) : Bool} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/proofs/word_bounds.bend unsigned_bound @+n:Nat -> @w:Word(n) -> {Nat.is_lt(0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.unsigned(n, w), 0xf86f5f1d9a594d5a5cff999100e01d03/proofs/lib/lemmas/spec/numeric.scale_binary(n, 1n)) == True{} : Bool} bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/src/cache.bend without @xs:List<&2, String> -> @+key:String -> List<&2, String> bend-kit-lemmas@0.1.0.0/lemmas.bend to_nat_con @-p:Nat -> @x:Bool -> @-t:Word(p) -> {bit(x, Word.to_nat(p, t)) == Word.to_nat(1n+p, WCon{x, t}) : Nat} bend-kit-lemmas@0.1.0.0/lemmas.bend cmp_bit @a:Nat -> @b:Nat -> @x:Bool -> @y:Bool -> {Word.cmp.fin(x, y, Nat.cmp(a, b)) == Nat.cmp(bit(x, a), bit(y, b)) : Cmp} bend-kit-lemmas@0.1.0.0/lemmas.bend word_cmp_nat @n:Nat -> @a:Word(n) -> @b:Word(n) -> {Word.cmp(n, a, b) == Nat.cmp(Word.to_nat(n, a), Word.to_nat(n, b)) : Cmp} bend-kit-lemmas@0.1.0.0/lemmas.bend u32_cmp_nat @a:U32 -> @b:U32 -> {U32.cmp(a, b) == Nat.cmp(U32.to_nat(a), U32.to_nat(b)) : Cmp} bend-kit-lemmas@0.1.0.0/lemmas.bend u32_is_lt_nat @a:U32 -> @b:U32 -> {U32.is_lt(a, b) == Nat.is_lt(U32.to_nat(a), U32.to_nat(b)) : Bool} bend-kit-lemmas@0.1.0.0/lemmas.bend u32_is_le_nat @a:U32 -> @b:U32 -> {U32.is_le(a, b) == Nat.is_le(U32.to_nat(a), U32.to_nat(b)) : Bool} bend-kit-lemmas@0.1.0.0/lemmas.bend u32_is_eq_nat @a:U32 -> @b:U32 -> {U32.is_eq(a, b) == Nat.is_eq(U32.to_nat(a), U32.to_nat(b)) : Bool} bend-kit-lemmas@0.1.0.0/lemmas.bend odd_lt_double @a:Nat -> @b:Nat -> @h:0x449abff091641d732d7b9f0780df40ae/nat.lt(a, b) -> 0x449abff091641d732d7b9f0780df40ae/nat.lt(1n+Nat.double(a), Nat.double(b)) bend-kit-lemmas@0.1.0.0/lemmas.bend word_to_nat_lt @n:Nat -> @w:Word(n) -> 0x449abff091641d732d7b9f0780df40ae/nat.lt(Word.to_nat(n, w), pow2(n)) bend-kit-lemmas@0.1.0.0/lemmas.bend u32_to_nat_word @-x:Word(32n) -> {Word.to_nat(32n, x) == U32.to_nat(U32{x}) : Nat} bend-kit-lemmas@0.1.0.0/lemmas.bend u32_to_nat_lt @a:U32 -> 0x449abff091641d732d7b9f0780df40ae/nat.lt(U32.to_nat(a), pow2(32n)) bend-kit-lemmas@0.1.0.0/lemmas.bend double_inj @a:Nat -> @b:Nat -> @h:{Nat.double(a) == Nat.double(b) : Nat} -> {a == b : Nat} bend-kit-lemmas@0.1.0.0/lemmas.bend double_ne_odd @a:Nat -> @b:Nat -> @h:{Nat.double(a) == 1n+Nat.double(b) : Nat} -> Empty bend-kit-lemmas@0.1.0.0/lemmas.bend word_to_nat_inj @n:Nat -> @a:Word(n) -> @b:Word(n) -> @h:{Word.to_nat(n, a) == Word.to_nat(n, b) : Nat} -> {a == b : Word(n)} bend-kit-lemmas@0.1.0.0/lemmas.bend u32_to_nat_inj @a:U32 -> @b:U32 -> @h:{U32.to_nat(a) == U32.to_nat(b) : Nat} -> {a == b : U32} bend-kit-lemmas@0.1.0.0/lemmas.bend scale_double @q:Bool -> @-m:Nat -> {Nat.double(scale(q, m)) == scale(q, Nat.double(m)) : Nat} bend-kit-lemmas@0.1.0.0/lemmas.bend adc_step @+s:Nat -> @+x:Nat -> @+y:Nat -> @+c:Nat -> @+k:Nat -> @+r:Nat -> @+q:Bool -> @+m:Nat -> @+a:Nat -> @+b:Nat -> @ih:{Nat.add(r, scale(q, m)) == Nat.add(k, Nat.add(a, b)) : Nat} -> @fa:{Nat.add(c, Nat.add(x, y)) == Nat.add(s, Nat.double(k)) : Nat} -> {Nat.add(Nat.add(s, Nat.double(r)), scale(q, Nat.double(m))) == Nat.add(c, Nat.add(Nat.add(x, Nat.double(a)), Nat.add(y, Nat.double(b)))) : Nat} bend-kit-lemmas@0.1.0.0/lemmas.bend word_adc_nat @n:Nat -> @a:Word(n) -> @b:Word(n) -> @c:Bool -> {Nat.add(Word.to_nat(n, Word.adc(n, a, b, False{}, c)), scale(carry(n, a, b, c), pow2(n))) == Nat.add(b2n(c), Nat.add(Word.to_nat(n, a), Word.to_nat(n, b))) : Nat} bend-kit-lemmas@0.1.0.0/lemmas.bend lt_rw @-a:Nat -> @-b:Nat -> @-c:Nat -> @e:{a == b : Nat} -> @h:0x449abff091641d732d7b9f0780df40ae/nat.lt(b, c) -> 0x449abff091641d732d7b9f0780df40ae/nat.lt(a, c) bend-kit-lemmas@0.1.0.0/lemmas.bend add_no_carry @q:Bool -> @+r:Nat -> @+m:Nat -> @+s:Nat -> @e:{Nat.add(r, scale(q, m)) == s : Nat} -> @h:0x449abff091641d732d7b9f0780df40ae/nat.lt(s, m) -> {r == s : Nat} bend-kit-lemmas@0.1.0.0/lemmas.bend add_mod_carry @q:Bool -> @+r:Nat -> @+m:Nat -> @+s:Nat -> @e:{Nat.add(r, scale(q, m)) == s : Nat} -> @h:0x449abff091641d732d7b9f0780df40ae/nat.lt(r, m) -> {r == Nat.mod(s, m) : Nat} bend-kit-lemmas@0.1.0.0/lemmas.bend word_add_nat @+n:Nat -> @+a:Word(n) -> @+b:Word(n) -> @h:0x449abff091641d732d7b9f0780df40ae/nat.lt(Nat.add(Word.to_nat(n, a), Word.to_nat(n, b)), pow2(n)) -> {Word.to_nat(n, Word.add(n, a, b)) == Nat.add(Word.to_nat(n, a), Word.to_nat(n, b)) : Nat} bend-kit-lemmas@0.1.0.0/lemmas.bend word_add_mod @+n:Nat -> @+a:Word(n) -> @+b:Word(n) -> {Word.to_nat(n, Word.add(n, a, b)) == Nat.mod(Nat.add(Word.to_nat(n, a), Word.to_nat(n, b)), pow2(n)) : Nat} bend-kit-lemmas@0.1.0.0/lemmas.bend u32_add_word @-x:Word(32n) -> @-y:Word(32n) -> {Word.to_nat(32n, Word.add(32n, x, y)) == U32.to_nat(U32.add(U32{x}, U32{y})) : Nat} bend-kit-lemmas@0.1.0.0/lemmas.bend u32_add_nat @a:U32 -> @b:U32 -> @h:0x449abff091641d732d7b9f0780df40ae/nat.lt(Nat.add(U32.to_nat(a), U32.to_nat(b)), pow2(32n)) -> {U32.to_nat(U32.add(a, b)) == Nat.add(U32.to_nat(a), U32.to_nat(b)) : Nat} bend-kit-lemmas@0.1.0.0/lemmas.bend u32_add_mod @a:U32 -> @b:U32 -> {U32.to_nat(U32.add(a, b)) == Nat.mod(Nat.add(U32.to_nat(a), U32.to_nat(b)), pow2(32n)) : Nat} bend-kit-lemmas@0.1.0.0/lemmas.bend word_not_nat @n:Nat -> @w:Word(n) -> {1n+Nat.add(Word.to_nat(n, Word.not(n, w)), Word.to_nat(n, w)) == pow2(n) : Nat} bend-kit-lemmas@0.1.0.0/lemmas.bend word_sub_not @n:Nat -> @a:Word(n) -> @b:Word(n) -> @+c:Bool -> {Word.adc(n, a, b, True{}, c) == Word.adc(n, a, Word.not(n, b), False{}, c) : Word(n)} bend-kit-lemmas@0.1.0.0/lemmas.bend sub_arith @+a:Nat -> @+b:Nat -> @+nb:Nat -> @+m:Nat -> @h:0x449abff091641d732d7b9f0780df40ae/nat.le(b, a) -> @hn:{1n+Nat.add(nb, b) == m : Nat} -> {1n+Nat.add(a, nb) == Nat.add(Nat.sub(a, b), m) : Nat} bend-kit-lemmas@0.1.0.0/lemmas.bend sub_fin @q:Bool -> @+r:Nat -> @+d:Nat -> @+m:Nat -> @e:{Nat.add(r, scale(q, m)) == Nat.add(d, m) : Nat} -> @h:0x449abff091641d732d7b9f0780df40ae/nat.lt(r, m) -> {r == d : Nat} bend-kit-lemmas@0.1.0.0/lemmas.bend word_sub_nat @+n:Nat -> @+a:Word(n) -> @+b:Word(n) -> @h:0x449abff091641d732d7b9f0780df40ae/nat.le(Word.to_nat(n, b), Word.to_nat(n, a)) -> {Word.to_nat(n, Word.sub(n, a, b)) == Nat.sub(Word.to_nat(n, a), Word.to_nat(n, b)) : Nat} bend-kit-lemmas@0.1.0.0/lemmas.bend u32_sub_nat @a:U32 -> @b:U32 -> @h:0x449abff091641d732d7b9f0780df40ae/nat.le(U32.to_nat(b), U32.to_nat(a)) -> {U32.to_nat(U32.sub(a, b)) == Nat.sub(U32.to_nat(a), U32.to_nat(b)) : Nat} bend-kit-lemmas@0.1.0.0/lemmas.bend lt_of_double_lt @a:Nat -> @b:Nat -> @h:0x449abff091641d732d7b9f0780df40ae/nat.lt(Nat.double(a), Nat.double(b)) -> 0x449abff091641d732d7b9f0780df40ae/nat.lt(a, b) bend-kit-lemmas@0.1.0.0/lemmas.bend word_inc_nat @n:Nat -> @w:Word(n) -> @h:0x449abff091641d732d7b9f0780df40ae/nat.lt(1n+Word.to_nat(n, w), pow2(n)) -> {Word.to_nat(n, Word.inc(n, w)) == 1n+Word.to_nat(n, w) : Nat} bend-kit-lemmas@0.1.0.0/lemmas.bend u32_inc_nat @a:U32 -> @h:0x449abff091641d732d7b9f0780df40ae/nat.lt(1n+U32.to_nat(a), pow2(32n)) -> {U32.to_nat(U32.inc(a)) == 1n+U32.to_nat(a) : Nat} bend-kit-lemmas@0.1.0.0/lemmas.bend u32_to_from_nat @k:Nat -> @+h:0x449abff091641d732d7b9f0780df40ae/nat.lt(k, pow2(32n)) -> {U32.to_nat(U32.from_nat(k)) == k : Nat} bend-kit-lemmas@0.1.0.0/lemmas.bend u32_from_to_nat @+a:U32 -> {U32.from_nat(U32.to_nat(a)) == a : U32} bend-kit-lemmas@0.1.0.0/lemmas.bend and_le_sub @c:Bool -> @+a:Nat -> @+b:Nat -> @+l:Nat -> @-s:Nat -> @+hc:{Nat.is_le(a, l) == c : Bool} -> @hs:(@_:0x449abff091641d732d7b9f0780df40ae/nat.le(a, l) -> {s == Nat.sub(l, a) : Nat}) -> {Bool.and(c, Nat.is_le(b, s)) == Nat.is_le(Nat.add(a, b), l) : Bool} bend-kit-lemmas@0.1.0.0/lemmas.bend u32_fits_nat @+len:U32 -> @+i:U32 -> @+n:U32 -> {Bool.and(U32.is_le(n, len), U32.is_le(i, U32.sub(len, n))) == Nat.is_le(Nat.add(U32.to_nat(i), U32.to_nat(n)), U32.to_nat(len)) : Bool} bend-mathlib@0.7.2.0/algebra.bend op_assoc4 @-A:Data -> @-op:(@_:A -> @_:A -> A) -> @-assoc:(@x:A -> @y:A -> @z:A -> {op(op(x, y), z) == op(x, op(y, z)) : A}) -> @+a:A -> @+b:A -> @+c:A -> @+d:A -> {op(op(op(a, b), c), d) == op(a, op(b, op(c, d))) : A} bend-mathlib@0.7.2.0/algebra.bend op_left_comm @-A:Data -> @-op:(@_:A -> @_:A -> A) -> @-assoc:(@x:A -> @y:A -> @z:A -> {op(op(x, y), z) == op(x, op(y, z)) : A}) -> @-comm:(@x:A -> @y:A -> {op(x, y) == op(y, x) : A}) -> @+a:A -> @+b:A -> @+c:A -> {op(a, op(b, c)) == op(b, op(a, c)) : A} bend-mathlib@0.7.2.0/algebra.bend op_right_comm @-A:Data -> @-op:(@_:A -> @_:A -> A) -> @-assoc:(@x:A -> @y:A -> @z:A -> {op(op(x, y), z) == op(x, op(y, z)) : A}) -> @-comm:(@x:A -> @y:A -> {op(x, y) == op(y, x) : A}) -> @+a:A -> @+b:A -> @+c:A -> {op(op(a, b), c) == op(op(a, c), b) : A} bend-mathlib@0.7.2.0/algebra.bend op_four @-A:Data -> @-op:(@_:A -> @_:A -> A) -> @-assoc:(@x:A -> @y:A -> @z:A -> {op(op(x, y), z) == op(x, op(y, z)) : A}) -> @-comm:(@x:A -> @y:A -> {op(x, y) == op(y, x) : A}) -> @+a:A -> @+b:A -> @+c:A -> @+d:A -> {op(op(a, b), op(c, d)) == op(op(a, c), op(b, d)) : A} bend-mathlib@0.7.2.0/algebra.bend op_comm3 @-A:Data -> @-op:(@_:A -> @_:A -> A) -> @-comm:(@x:A -> @y:A -> {op(x, y) == op(y, x) : A}) -> @+a:A -> @+b:A -> @+c:A -> {op(op(a, b), c) == op(c, op(b, a)) : A} bend-mathlib@0.7.2.0/algebra.bend nat_add_left_comm @+a:Nat -> @+b:Nat -> @+c:Nat -> {Nat.add(a, Nat.add(b, c)) == Nat.add(b, Nat.add(a, c)) : Nat} bend-mathlib@0.7.2.0/algebra.bend nat_add_right_comm @+a:Nat -> @+b:Nat -> @+c:Nat -> {Nat.add(Nat.add(a, b), c) == Nat.add(Nat.add(a, c), b) : Nat} bend-mathlib@0.7.2.0/algebra.bend nat_add_four @+a:Nat -> @+b:Nat -> @+c:Nat -> @+d:Nat -> {Nat.add(Nat.add(a, b), Nat.add(c, d)) == Nat.add(Nat.add(a, c), Nat.add(b, d)) : Nat} bend-mathlib@0.7.2.0/algebra.bend nat_mul_left_comm @+a:Nat -> @+b:Nat -> @+c:Nat -> {Nat.mul(a, Nat.mul(b, c)) == Nat.mul(b, Nat.mul(a, c)) : Nat} bend-mathlib@0.7.2.0/algebra.bend nat_mul_right_comm @+a:Nat -> @+b:Nat -> @+c:Nat -> {Nat.mul(Nat.mul(a, b), c) == Nat.mul(Nat.mul(a, c), b) : Nat} bend-mathlib@0.7.2.0/algebra.bend nat_mul_four @+a:Nat -> @+b:Nat -> @+c:Nat -> @+d:Nat -> {Nat.mul(Nat.mul(a, b), Nat.mul(c, d)) == Nat.mul(Nat.mul(a, c), Nat.mul(b, d)) : Nat} bend-mathlib@0.7.2.0/algebra.bend bool_and_left_comm @+a:Bool -> @+b:Bool -> @+c:Bool -> {Bool.and(a, Bool.and(b, c)) == Bool.and(b, Bool.and(a, c)) : Bool} bend-mathlib@0.7.2.0/algebra.bend bool_and_right_comm @+a:Bool -> @+b:Bool -> @+c:Bool -> {Bool.and(Bool.and(a, b), c) == Bool.and(Bool.and(a, c), b) : Bool} bend-mathlib@0.7.2.0/algebra.bend bool_or_left_comm @+a:Bool -> @+b:Bool -> @+c:Bool -> {Bool.or(a, Bool.or(b, c)) == Bool.or(b, Bool.or(a, c)) : Bool} bend-mathlib@0.7.2.0/algebra.bend bool_or_right_comm @+a:Bool -> @+b:Bool -> @+c:Bool -> {Bool.or(Bool.or(a, b), c) == Bool.or(Bool.or(a, c), b) : Bool} bend-mathlib@0.7.2.0/algebra.bend list_nat_append_assoc4 @+a:List<&2, Nat> -> @+b:List<&2, Nat> -> @+c:List<&2, Nat> -> @+d:List<&2, Nat> -> {List.append(&2, Nat, List.append(&2, Nat, List.append(&2, Nat, a, b), c), d) == List.append(&2, Nat, a, List.append(&2, Nat, b, List.append(&2, Nat, c, d))) : List<&2, Nat>} bend-mathlib@0.7.2.0/algebra.bend foldl_op_eq_foldr_op @-B:Data -> @-op:(@_:B -> @_:B -> B) -> @-assoc:(@x:B -> @y:B -> @z:B -> {op(op(x, y), z) == op(x, op(y, z)) : B}) -> @-comm:(@x:B -> @y:B -> {op(x, y) == op(y, x) : B}) -> @-z:B -> @-id:(@x:B -> {op(z, x) == x : B}) -> @+xs:List<&2, B> -> {List.foldl(&2, B, B, op, xs, z) == List.foldr(&2, B, B, op, xs, z) : B} bend-mathlib@0.7.2.0/algebra.bend foldl_eq_foldr @-B:Data -> @-op:(@_:B -> @_:B -> B) -> @-assoc:(@x:B -> @y:B -> @z:B -> {op(op(x, y), z) == op(x, op(y, z)) : B}) -> @-comm:(@x:B -> @y:B -> {op(x, y) == op(y, x) : B}) -> @+z:B -> @+xs:List<&2, B> -> {List.foldl(&2, B, B, op, xs, z) == List.foldr(&2, B, B, op, xs, z) : B} bend-mathlib@0.7.2.0/algebra.bend op_assoc4_sym @-A:Data -> @-op:(@_:A -> @_:A -> A) -> @-assoc:(@x:A -> @y:A -> @z:A -> {op(op(x, y), z) == op(x, op(y, z)) : A}) -> @+a:A -> @+b:A -> @+c:A -> @+d:A -> {op(a, op(b, op(c, d))) == op(op(op(a, b), c), d) : A} bend-mathlib@0.7.2.0/algebra.bend op_left_comm_sym @-A:Data -> @-op:(@_:A -> @_:A -> A) -> @-assoc:(@x:A -> @y:A -> @z:A -> {op(op(x, y), z) == op(x, op(y, z)) : A}) -> @-comm:(@x:A -> @y:A -> {op(x, y) == op(y, x) : A}) -> @+a:A -> @+b:A -> @+c:A -> {op(b, op(a, c)) == op(a, op(b, c)) : A} bend-mathlib@0.7.2.0/algebra.bend op_right_comm_sym @-A:Data -> @-op:(@_:A -> @_:A -> A) -> @-assoc:(@x:A -> @y:A -> @z:A -> {op(op(x, y), z) == op(x, op(y, z)) : A}) -> @-comm:(@x:A -> @y:A -> {op(x, y) == op(y, x) : A}) -> @+a:A -> @+b:A -> @+c:A -> {op(op(a, c), b) == op(op(a, b), c) : A} bend-mathlib@0.7.2.0/algebra.bend op_four_sym @-A:Data -> @-op:(@_:A -> @_:A -> A) -> @-assoc:(@x:A -> @y:A -> @z:A -> {op(op(x, y), z) == op(x, op(y, z)) : A}) -> @-comm:(@x:A -> @y:A -> {op(x, y) == op(y, x) : A}) -> @+a:A -> @+b:A -> @+c:A -> @+d:A -> {op(op(a, c), op(b, d)) == op(op(a, b), op(c, d)) : A} bend-mathlib@0.7.2.0/algebra.bend op_comm3_sym @-A:Data -> @-op:(@_:A -> @_:A -> A) -> @-comm:(@x:A -> @y:A -> {op(x, y) == op(y, x) : A}) -> @+a:A -> @+b:A -> @+c:A -> {op(c, op(b, a)) == op(op(a, b), c) : A} bend-mathlib@0.7.2.0/algebra.bend nat_add_left_comm_sym @+a:Nat -> @+b:Nat -> @+c:Nat -> {Nat.add(b, Nat.add(a, c)) == Nat.add(a, Nat.add(b, c)) : Nat} bend-mathlib@0.7.2.0/algebra.bend nat_add_right_comm_sym @+a:Nat -> @+b:Nat -> @+c:Nat -> {Nat.add(Nat.add(a, c), b) == Nat.add(Nat.add(a, b), c) : Nat} bend-mathlib@0.7.2.0/algebra.bend nat_add_four_sym @+a:Nat -> @+b:Nat -> @+c:Nat -> @+d:Nat -> {Nat.add(Nat.add(a, c), Nat.add(b, d)) == Nat.add(Nat.add(a, b), Nat.add(c, d)) : Nat} bend-mathlib@0.7.2.0/algebra.bend nat_mul_left_comm_sym @+a:Nat -> @+b:Nat -> @+c:Nat -> {Nat.mul(b, Nat.mul(a, c)) == Nat.mul(a, Nat.mul(b, c)) : Nat} bend-mathlib@0.7.2.0/algebra.bend nat_mul_right_comm_sym @+a:Nat -> @+b:Nat -> @+c:Nat -> {Nat.mul(Nat.mul(a, c), b) == Nat.mul(Nat.mul(a, b), c) : Nat} bend-mathlib@0.7.2.0/algebra.bend nat_mul_four_sym @+a:Nat -> @+b:Nat -> @+c:Nat -> @+d:Nat -> {Nat.mul(Nat.mul(a, c), Nat.mul(b, d)) == Nat.mul(Nat.mul(a, b), Nat.mul(c, d)) : Nat} bend-mathlib@0.7.2.0/algebra.bend bool_and_left_comm_sym @+a:Bool -> @+b:Bool -> @+c:Bool -> {Bool.and(b, Bool.and(a, c)) == Bool.and(a, Bool.and(b, c)) : Bool} bend-mathlib@0.7.2.0/algebra.bend bool_and_right_comm_sym @+a:Bool -> @+b:Bool -> @+c:Bool -> {Bool.and(Bool.and(a, c), b) == Bool.and(Bool.and(a, b), c) : Bool} bend-mathlib@0.7.2.0/algebra.bend bool_or_left_comm_sym @+a:Bool -> @+b:Bool -> @+c:Bool -> {Bool.or(b, Bool.or(a, c)) == Bool.or(a, Bool.or(b, c)) : Bool} bend-mathlib@0.7.2.0/algebra.bend bool_or_right_comm_sym @+a:Bool -> @+b:Bool -> @+c:Bool -> {Bool.or(Bool.or(a, c), b) == Bool.or(Bool.or(a, b), c) : Bool} bend-mathlib@0.7.2.0/algebra.bend list_nat_append_assoc4_sym @+a:List<&2, Nat> -> @+b:List<&2, Nat> -> @+c:List<&2, Nat> -> @+d:List<&2, Nat> -> {List.append(&2, Nat, a, List.append(&2, Nat, b, List.append(&2, Nat, c, d))) == List.append(&2, Nat, List.append(&2, Nat, List.append(&2, Nat, a, b), c), d) : List<&2, Nat>} bend-mathlib@0.7.2.0/algebra.bend foldl_op_eq_foldr_op_sym @-B:Data -> @-op:(@_:B -> @_:B -> B) -> @-assoc:(@x:B -> @y:B -> @z:B -> {op(op(x, y), z) == op(x, op(y, z)) : B}) -> @-comm:(@x:B -> @y:B -> {op(x, y) == op(y, x) : B}) -> @-z:B -> @-id:(@x:B -> {op(z, x) == x : B}) -> @+xs:List<&2, B> -> {List.foldr(&2, B, B, op, xs, z) == List.foldl(&2, B, B, op, xs, z) : B} bend-mathlib@0.7.2.0/algebra.bend foldl_eq_foldr_sym @-B:Data -> @-op:(@_:B -> @_:B -> B) -> @-assoc:(@x:B -> @y:B -> @z:B -> {op(op(x, y), z) == op(x, op(y, z)) : B}) -> @-comm:(@x:B -> @y:B -> {op(x, y) == op(y, x) : B}) -> @+z:B -> @+xs:List<&2, B> -> {List.foldr(&2, B, B, op, xs, z) == List.foldl(&2, B, B, op, xs, z) : B} bend-mathlib@0.7.2.0/bool.bend not_not @b:Bool -> {Bool.not(Bool.not(b)) == b : Bool} bend-mathlib@0.7.2.0/bool.bend and_comm @a:Bool -> @b:Bool -> {Bool.and(a, b) == Bool.and(b, a) : Bool} bend-mathlib@0.7.2.0/bool.bend or_comm @a:Bool -> @b:Bool -> {Bool.or(a, b) == Bool.or(b, a) : Bool} bend-mathlib@0.7.2.0/bool.bend and_assoc @a:Bool -> @-b:Bool -> @-c:Bool -> {Bool.and(Bool.and(a, b), c) == Bool.and(a, Bool.and(b, c)) : Bool} bend-mathlib@0.7.2.0/bool.bend or_assoc @a:Bool -> @-b:Bool -> @-c:Bool -> {Bool.or(Bool.or(a, b), c) == Bool.or(a, Bool.or(b, c)) : Bool} bend-mathlib@0.7.2.0/bool.bend and_true @a:Bool -> {Bool.and(a, True{}) == a : Bool} bend-mathlib@0.7.2.0/bool.bend true_and @-a:Bool -> {Bool.and(True{}, a) == a : Bool} bend-mathlib@0.7.2.0/bool.bend and_false @a:Bool -> {Bool.and(a, False{}) == False{} : Bool} bend-mathlib@0.7.2.0/bool.bend false_and @-a:Bool -> {Bool.and(False{}, a) == False{} : Bool} bend-mathlib@0.7.2.0/bool.bend or_false @a:Bool -> {Bool.or(a, False{}) == a : Bool} bend-mathlib@0.7.2.0/bool.bend false_or @-a:Bool -> {Bool.or(False{}, a) == a : Bool} bend-mathlib@0.7.2.0/bool.bend or_true @a:Bool -> {Bool.or(a, True{}) == True{} : Bool} bend-mathlib@0.7.2.0/bool.bend true_or @-a:Bool -> {Bool.or(True{}, a) == True{} : Bool} bend-mathlib@0.7.2.0/bool.bend de_morgan_and @a:Bool -> @-b:Bool -> {Bool.not(Bool.and(a, b)) == Bool.or(Bool.not(a), Bool.not(b)) : Bool} bend-mathlib@0.7.2.0/bool.bend de_morgan_or @a:Bool -> @-b:Bool -> {Bool.not(Bool.or(a, b)) == Bool.and(Bool.not(a), Bool.not(b)) : Bool} bend-mathlib@0.7.2.0/bool.bend true_ne_false @_:{True{} == False{} : Bool} -> Empty bend-mathlib@0.7.2.0/bool.bend and_self @a:Bool -> {Bool.and(a, a) == a : Bool} bend-mathlib@0.7.2.0/bool.bend or_self @a:Bool -> {Bool.or(a, a) == a : Bool} bend-mathlib@0.7.2.0/bool.bend and_not_self @a:Bool -> {Bool.and(a, Bool.not(a)) == False{} : Bool} bend-mathlib@0.7.2.0/bool.bend or_not_self @a:Bool -> {Bool.or(a, Bool.not(a)) == True{} : Bool} bend-mathlib@0.7.2.0/bool.bend and_or_distrib_left @a:Bool -> @-b:Bool -> @-c:Bool -> {Bool.and(a, Bool.or(b, c)) == Bool.or(Bool.and(a, b), Bool.and(a, c)) : Bool} bend-mathlib@0.7.2.0/bool.bend or_and_distrib_left @a:Bool -> @-b:Bool -> @-c:Bool -> {Bool.or(a, Bool.and(b, c)) == Bool.and(Bool.or(a, b), Bool.or(a, c)) : Bool} bend-mathlib@0.7.2.0/bool.bend and_or_absorb @a:Bool -> @-b:Bool -> {Bool.and(a, Bool.or(a, b)) == a : Bool} bend-mathlib@0.7.2.0/bool.bend or_and_absorb @a:Bool -> @-b:Bool -> {Bool.or(a, Bool.and(a, b)) == a : Bool} bend-mathlib@0.7.2.0/bool.bend xor_comm @a:Bool -> @b:Bool -> {Bool.xor(a, b) == Bool.xor(b, a) : Bool} bend-mathlib@0.7.2.0/bool.bend xor_assoc @a:Bool -> @b:Bool -> @c:Bool -> {Bool.xor(Bool.xor(a, b), c) == Bool.xor(a, Bool.xor(b, c)) : Bool} bend-mathlib@0.7.2.0/bool.bend xor_self @a:Bool -> {Bool.xor(a, a) == False{} : Bool} bend-mathlib@0.7.2.0/bool.bend xor_false @a:Bool -> {Bool.xor(a, False{}) == a : Bool} bend-mathlib@0.7.2.0/bool.bend xor_true @a:Bool -> {Bool.xor(a, True{}) == Bool.not(a) : Bool} bend-mathlib@0.7.2.0/bool.bend not_inj @a:Bool -> @b:Bool -> @h:{Bool.not(a) == Bool.not(b) : Bool} -> {a == b : Bool} bend-mathlib@0.7.2.0/bool.bend eq_true_of_ne_false @a:Bool -> @h:(@_:{a == False{} : Bool} -> Empty) -> {a == True{} : Bool} bend-mathlib@0.7.2.0/bool.bend cmp_refl @b:Bool -> {Bool.cmp(b, b) == EQ{} : Cmp} bend-mathlib@0.7.2.0/bool.bend eq_of_cmp_eq @a:Bool -> @b:Bool -> @h:{Cmp.is_eq(Bool.cmp(a, b)) == True{} : Bool} -> {a == b : Bool} bend-mathlib@0.7.2.0/bool.bend false_ne_true @_:{False{} == True{} : Bool} -> Empty bend-mathlib@0.7.2.0/bool.bend eq_true_of_and_left @a:Bool -> @-b:Bool -> @h:{Bool.and(a, b) == True{} : Bool} -> {a == True{} : Bool} bend-mathlib@0.7.2.0/bool.bend eq_true_of_and_right @a:Bool -> @-b:Bool -> @h:{Bool.and(a, b) == True{} : Bool} -> {b == True{} : Bool} bend-mathlib@0.7.2.0/bool.bend and_eq_true @a:Bool -> @-b:Bool -> @ha:{a == True{} : Bool} -> @hb:{b == True{} : Bool} -> {Bool.and(a, b) == True{} : Bool} bend-mathlib@0.7.2.0/bool.bend eq_true_of_or_eq_false_right @a:Bool -> @-b:Bool -> @h:{Bool.or(a, b) == True{} : Bool} -> @hb:{b == False{} : Bool} -> {a == True{} : Bool} bend-mathlib@0.7.2.0/bool.bend eq_true_of_or_eq_false_left @a:Bool -> @-b:Bool -> @h:{Bool.or(a, b) == True{} : Bool} -> @ha:{a == False{} : Bool} -> {b == True{} : Bool} bend-mathlib@0.7.2.0/bool.bend eq_false_of_not_eq_true @b:Bool -> @h:{Bool.not(b) == True{} : Bool} -> {b == False{} : Bool} bend-mathlib@0.7.2.0/bool.bend not_not_sym @b:Bool -> {b == Bool.not(Bool.not(b)) : Bool} bend-mathlib@0.7.2.0/bool.bend and_comm_sym @a:Bool -> @b:Bool -> {Bool.and(b, a) == Bool.and(a, b) : Bool} bend-mathlib@0.7.2.0/bool.bend or_comm_sym @a:Bool -> @b:Bool -> {Bool.or(b, a) == Bool.or(a, b) : Bool} bend-mathlib@0.7.2.0/bool.bend and_assoc_sym @a:Bool -> @-b:Bool -> @-c:Bool -> {Bool.and(a, Bool.and(b, c)) == Bool.and(Bool.and(a, b), c) : Bool} bend-mathlib@0.7.2.0/bool.bend or_assoc_sym @a:Bool -> @-b:Bool -> @-c:Bool -> {Bool.or(a, Bool.or(b, c)) == Bool.or(Bool.or(a, b), c) : Bool} bend-mathlib@0.7.2.0/bool.bend and_true_sym @a:Bool -> {a == Bool.and(a, True{}) : Bool} bend-mathlib@0.7.2.0/bool.bend true_and_sym @-a:Bool -> {a == Bool.and(True{}, a) : Bool} bend-mathlib@0.7.2.0/bool.bend and_false_sym @a:Bool -> {False{} == Bool.and(a, False{}) : Bool} bend-mathlib@0.7.2.0/bool.bend false_and_sym @-a:Bool -> {False{} == Bool.and(False{}, a) : Bool} bend-mathlib@0.7.2.0/bool.bend or_false_sym @a:Bool -> {a == Bool.or(a, False{}) : Bool} bend-mathlib@0.7.2.0/bool.bend false_or_sym @-a:Bool -> {a == Bool.or(False{}, a) : Bool} bend-mathlib@0.7.2.0/bool.bend or_true_sym @a:Bool -> {True{} == Bool.or(a, True{}) : Bool} bend-mathlib@0.7.2.0/bool.bend true_or_sym @-a:Bool -> {True{} == Bool.or(True{}, a) : Bool} bend-mathlib@0.7.2.0/bool.bend de_morgan_and_sym @a:Bool -> @-b:Bool -> {Bool.or(Bool.not(a), Bool.not(b)) == Bool.not(Bool.and(a, b)) : Bool} bend-mathlib@0.7.2.0/bool.bend de_morgan_or_sym @a:Bool -> @-b:Bool -> {Bool.and(Bool.not(a), Bool.not(b)) == Bool.not(Bool.or(a, b)) : Bool} bend-mathlib@0.7.2.0/bool.bend and_self_sym @a:Bool -> {a == Bool.and(a, a) : Bool} bend-mathlib@0.7.2.0/bool.bend or_self_sym @a:Bool -> {a == Bool.or(a, a) : Bool} bend-mathlib@0.7.2.0/bool.bend and_not_self_sym @a:Bool -> {False{} == Bool.and(a, Bool.not(a)) : Bool} bend-mathlib@0.7.2.0/bool.bend or_not_self_sym @a:Bool -> {True{} == Bool.or(a, Bool.not(a)) : Bool} bend-mathlib@0.7.2.0/bool.bend and_or_distrib_left_sym @a:Bool -> @-b:Bool -> @-c:Bool -> {Bool.or(Bool.and(a, b), Bool.and(a, c)) == Bool.and(a, Bool.or(b, c)) : Bool} bend-mathlib@0.7.2.0/bool.bend or_and_distrib_left_sym @a:Bool -> @-b:Bool -> @-c:Bool -> {Bool.and(Bool.or(a, b), Bool.or(a, c)) == Bool.or(a, Bool.and(b, c)) : Bool} bend-mathlib@0.7.2.0/bool.bend and_or_absorb_sym @a:Bool -> @-b:Bool -> {a == Bool.and(a, Bool.or(a, b)) : Bool} bend-mathlib@0.7.2.0/bool.bend or_and_absorb_sym @a:Bool -> @-b:Bool -> {a == Bool.or(a, Bool.and(a, b)) : Bool} bend-mathlib@0.7.2.0/bool.bend xor_comm_sym @a:Bool -> @b:Bool -> {Bool.xor(b, a) == Bool.xor(a, b) : Bool} bend-mathlib@0.7.2.0/bool.bend xor_assoc_sym @a:Bool -> @b:Bool -> @c:Bool -> {Bool.xor(a, Bool.xor(b, c)) == Bool.xor(Bool.xor(a, b), c) : Bool} bend-mathlib@0.7.2.0/bool.bend xor_self_sym @a:Bool -> {False{} == Bool.xor(a, a) : Bool} bend-mathlib@0.7.2.0/bool.bend xor_false_sym @a:Bool -> {a == Bool.xor(a, False{}) : Bool} bend-mathlib@0.7.2.0/bool.bend xor_true_sym @a:Bool -> {Bool.not(a) == Bool.xor(a, True{}) : Bool} bend-mathlib@0.7.2.0/bool.bend cmp_refl_sym @b:Bool -> {EQ{} == Bool.cmp(b, b) : Cmp} bend-mathlib@0.7.2.0/equal.bend cong2 @-A:Type -> @-B:Type -> @-C:Type -> @-f:(@_:A -> @_:B -> C) -> @-a1:A -> @-a2:A -> @-b1:B -> @-b2:B -> @ea:{a1 == a2 : A} -> @eb:{b1 == b2 : B} -> {f(a1, b1) == f(a2, b2) : C} bend-mathlib@0.7.2.0/equal.bend subst @-A:Type -> @-P:(@_:A -> Type) -> @-a:A -> @-b:A -> @e:{a == b : A} -> @p:P(a) -> P(b) bend-mathlib@0.7.2.0/equal.bend trans3 @-A:Type -> @-a:A -> @-b:A -> @-c:A -> @-d:A -> @ab:{a == b : A} -> @bc:{b == c : A} -> @cd:{c == d : A} -> {a == d : A} bend-mathlib@0.7.2.0/equal.bend cong_succ @-a:Nat -> @-b:Nat -> @e:{a == b : Nat} -> {1n+a == 1n+b : Nat} bend-mathlib@0.7.2.0/list.bend append_nil @-a:Quant -> @-A:Kind(a) -> @xs:List -> {List.append(a, A, xs, []) == xs : List} bend-mathlib@0.7.2.0/list.bend nil_append @-a:Quant -> @-A:Kind(a) -> @-xs:List -> {List.append(a, A, [], xs) == xs : List} bend-mathlib@0.7.2.0/list.bend append_assoc @-a:Quant -> @-A:Kind(a) -> @xs:List -> @-ys:List -> @-zs:List -> {List.append(a, A, List.append(a, A, xs, ys), zs) == List.append(a, A, xs, List.append(a, A, ys, zs)) : List} bend-mathlib@0.7.2.0/list.bend length_append @-a:Quant -> @-A:Kind(a) -> @xs:List -> @-ys:List -> {List.length(a, A, List.append(a, A, xs, ys)) == Nat.add(List.length(a, A, xs), List.length(a, A, ys)) : Nat} bend-mathlib@0.7.2.0/list.bend reverse_go_spec @-a:Quant -> @-A:Kind(a) -> @xs:List -> @-acc:List -> {List.reverse.go(a, A, xs, acc) == List.append(a, A, List.reverse(a, A, xs), acc) : List} bend-mathlib@0.7.2.0/list.bend reverse_append @-a:Quant -> @-A:Kind(a) -> @xs:List -> @ys:List -> {List.reverse(a, A, List.append(a, A, xs, ys)) == List.append(a, A, List.reverse(a, A, ys), List.reverse(a, A, xs)) : List} bend-mathlib@0.7.2.0/list.bend reverse_reverse @-a:Quant -> @-A:Kind(a) -> @xs:List -> {List.reverse(a, A, List.reverse(a, A, xs)) == xs : List} bend-mathlib@0.7.2.0/list.bend length_reverse @-a:Quant -> @-A:Kind(a) -> @xs:List -> {List.length(a, A, List.reverse(a, A, xs)) == List.length(a, A, xs) : Nat} bend-mathlib@0.7.2.0/list.bend foldr_append @-a:Quant -> @-A:Kind(a) -> @-B:Type -> @-f:(@_:A -> @_:B -> B) -> @xs:List -> @-ys:List -> @-z:B -> {List.foldr(a, A, B, f, List.append(a, A, xs, ys), z) == List.foldr(a, A, B, f, xs, List.foldr(a, A, B, f, ys, z)) : B} bend-mathlib@0.7.2.0/list.bend take_append_drop @-a:Quant -> @-A:Kind(a) -> @xs:List -> @n:Nat -> {List.append(a, A, List.take(a, A, xs, n), List.drop(a, A, xs, n)) == xs : List} bend-mathlib@0.7.2.0/list.bend length_map @-A:Type -> @-B:Type -> @-f:(@_:A -> B) -> @xs:List<&1, A> -> {List.length(&1, B, List.map(A, B, f, xs)) == List.length(&1, A, xs) : Nat} bend-mathlib@0.7.2.0/list.bend map_append @-A:Type -> @-B:Type -> @-f:(@_:A -> B) -> @xs:List<&1, A> -> @-ys:List<&1, A> -> {List.map(A, B, f, List.append(&1, A, xs, ys)) == List.append(&1, B, List.map(A, B, f, xs), List.map(A, B, f, ys)) : List<&1, B>} bend-mathlib@0.7.2.0/list.bend map_map @-A:Type -> @-B:Type -> @-C:Type -> @-f:(@_:A -> B) -> @-g:(@_:B -> C) -> @xs:List<&1, A> -> {List.map(B, C, g, List.map(A, B, f, xs)) == List.map(A, C, x => g(f(x)), xs) : List<&1, C>} bend-mathlib@0.7.2.0/list.bend take_zero @-a:Quant -> @-A:Kind(a) -> @xs:List -> {List.take(a, A, xs, 0n) == [] : List} bend-mathlib@0.7.2.0/list.bend drop_zero @-a:Quant -> @-A:Kind(a) -> @xs:List -> {List.drop(a, A, xs, 0n) == xs : List} bend-mathlib@0.7.2.0/list.bend take_nil @-a:Quant -> @-A:Kind(a) -> @-n:Nat -> {List.take(a, A, [], n) == [] : List} bend-mathlib@0.7.2.0/list.bend drop_nil @-a:Quant -> @-A:Kind(a) -> @-n:Nat -> {List.drop(a, A, [], n) == [] : List} bend-mathlib@0.7.2.0/list.bend length_take @-a:Quant -> @-A:Kind(a) -> @xs:List -> @n:Nat -> {List.length(a, A, List.take(a, A, xs, n)) == Nat.min(n, List.length(a, A, xs)) : Nat} bend-mathlib@0.7.2.0/list.bend length_drop @-a:Quant -> @-A:Kind(a) -> @xs:List -> @n:Nat -> {List.length(a, A, List.drop(a, A, xs, n)) == Nat.sub(List.length(a, A, xs), n) : Nat} bend-mathlib@0.7.2.0/list.bend take_length @-A:Data -> @+xs:List<&2, A> -> {List.take(&2, A, xs, List.length(&2, A, xs)) == xs : List<&2, A>} bend-mathlib@0.7.2.0/list.bend drop_length @-A:Data -> @+xs:List<&2, A> -> {List.drop(&2, A, xs, List.length(&2, A, xs)) == [] : List<&2, A>} bend-mathlib@0.7.2.0/list.bend take_take @-a:Quant -> @-A:Kind(a) -> @xs:List -> @n:Nat -> @m:Nat -> {List.take(a, A, List.take(a, A, xs, n), m) == List.take(a, A, xs, Nat.min(n, m)) : List} bend-mathlib@0.7.2.0/list.bend drop_drop @-a:Quant -> @-A:Kind(a) -> @xs:List -> @n:Nat -> @-m:Nat -> {List.drop(a, A, List.drop(a, A, xs, n), m) == List.drop(a, A, xs, Nat.add(n, m)) : List} bend-mathlib@0.7.2.0/list.bend reverse_nil @-a:Quant -> @-A:Kind(a) -> {List.reverse(a, A, []) == [] : List} bend-mathlib@0.7.2.0/list.bend reverse_singleton @-a:Quant -> @-A:Kind(a) -> @-x:A -> {List.reverse(a, A, [x]) == [x] : List} bend-mathlib@0.7.2.0/list.bend length_replicate @-A:Data -> @n:Nat -> @-x:A -> {List.length(&2, A, List.replicate(A, n, x)) == n : Nat} bend-mathlib@0.7.2.0/list.bend length_range @n:Nat -> {List.length(&2, Nat, List.range(n)) == n : Nat} bend-mathlib@0.7.2.0/list.bend length_zip @-a:Quant -> @-A:Kind(a) -> @xs:List -> @ys:List -> {List.length(&1, Pair(A, A), List.zip(a, A, a, A, xs, ys)) == Nat.min(List.length(a, A, xs), List.length(a, A, ys)) : Nat} bend-mathlib@0.7.2.0/list.bend append_cons @-a:Quant -> @-A:Kind(a) -> @-x:A -> @-xs:List -> @-ys:List -> {List.append(a, A, x <> xs, ys) == x <> List.append(a, A, xs, ys) : List} bend-mathlib@0.7.2.0/list.bend length_nil @-a:Quant -> @-A:Kind(a) -> {List.length(a, A, []) == 0n : Nat} bend-mathlib@0.7.2.0/list.bend length_cons @-a:Quant -> @-A:Kind(a) -> @-x:A -> @-xs:List -> {List.length(a, A, x <> xs) == 1n+List.length(a, A, xs) : Nat} bend-mathlib@0.7.2.0/list.bend concat_append @-a:Quant -> @-A:Kind(a) -> @xss:List> -> @-yss:List> -> {List.concat(a, A, List.append(a, List, xss, yss)) == List.append(a, A, List.concat(a, A, xss), List.concat(a, A, yss)) : List} bend-mathlib@0.7.2.0/list.bend foldl_append @-a:Quant -> @-A:Kind(a) -> @-B:Type -> @-f:(@_:B -> @_:A -> B) -> @xs:List -> @-ys:List -> @-z:B -> {List.foldl(a, A, B, f, List.append(a, A, xs, ys), z) == List.foldl(a, A, B, f, ys, List.foldl(a, A, B, f, xs, z)) : B} bend-mathlib@0.7.2.0/list.bend map_reverse @-A:Type -> @-B:Type -> @-f:(@_:A -> B) -> @xs:List<&1, A> -> {List.map(A, B, f, List.reverse(&1, A, xs)) == List.reverse(&1, B, List.map(A, B, f, xs)) : List<&1, B>} bend-mathlib@0.7.2.0/list.bend all_append @-a:Quant -> @-A:Kind(a) -> @-f:(@_:A -> Bool) -> @xs:List -> @-ys:List -> {List.all(a, A, f, List.append(a, A, xs, ys)) == Bool.and(List.all(a, A, f, xs), List.all(a, A, f, ys)) : Bool} bend-mathlib@0.7.2.0/list.bend any_append @-a:Quant -> @-A:Kind(a) -> @-f:(@_:A -> Bool) -> @xs:List -> @-ys:List -> {List.any(a, A, f, List.append(a, A, xs, ys)) == Bool.or(List.any(a, A, f, xs), List.any(a, A, f, ys)) : Bool} bend-mathlib@0.7.2.0/list.bend filter_append @-A:Data -> @-f:(@_:A -> Bool) -> @xs:List<&2, A> -> @ys:List<&2, A> -> {List.filter(A, f, List.append(&2, A, xs, ys)) == List.append(&2, A, List.filter(A, f, xs), List.filter(A, f, ys)) : List<&2, A>} bend-mathlib@0.7.2.0/list.bend contains_append @-A:Data -> @-eq:(@_:A -> @_:A -> Bool) -> @xs:List<&2, A> -> @-ys:List<&2, A> -> @+x:A -> {List.contains(A, eq, List.append(&2, A, xs, ys), x) == Bool.or(List.contains(A, eq, xs, x), List.contains(A, eq, ys, x)) : Bool} bend-mathlib@0.7.2.0/list.bend length_filter_le @-A:Data -> @-f:(@_:A -> Bool) -> @xs:List<&2, A> -> {Nat.is_le(List.length(&2, A, List.filter(A, f, xs)), List.length(&2, A, xs)) == True{} : Bool} bend-mathlib@0.7.2.0/list.bend mem_cons_self @x:Nat -> @-xs:List<&2, Nat> -> mem(Nat, Nat.is_eq, x, x <> xs) bend-mathlib@0.7.2.0/list.bend mem_cons_of_mem @x:Nat -> @y:Nat -> @-xs:List<&2, Nat> -> @h:mem(Nat, Nat.is_eq, x, xs) -> mem(Nat, Nat.is_eq, x, y <> xs) bend-mathlib@0.7.2.0/list.bend not_mem_nil @-x:Nat -> @_:mem(Nat, Nat.is_eq, x, []) -> Empty bend-mathlib@0.7.2.0/list.bend mem_append_left @xs:List<&2, Nat> -> @ys:List<&2, Nat> -> @x:Nat -> @h:mem(Nat, Nat.is_eq, x, xs) -> mem(Nat, Nat.is_eq, x, List.append(&2, Nat, xs, ys)) bend-mathlib@0.7.2.0/list.bend mem_append_right @xs:List<&2, Nat> -> @ys:List<&2, Nat> -> @x:Nat -> @h:mem(Nat, Nat.is_eq, x, ys) -> mem(Nat, Nat.is_eq, x, List.append(&2, Nat, xs, ys)) bend-mathlib@0.7.2.0/list.bend sorted_nil sorted_by(Nat, Nat.is_le, []) bend-mathlib@0.7.2.0/list.bend sorted_single @-x:Nat -> sorted_by(Nat, Nat.is_le, [x]) bend-mathlib@0.7.2.0/list.bend sorted_cons_cons_intro @-x:Nat -> @-y:Nat -> @-t:List<&2, Nat> -> @hxy:0x449abff091641d732d7b9f0780df40ae/nat.le(x, y) -> @hyt:sorted_by(Nat, Nat.is_le, y <> t) -> sorted_by(Nat, Nat.is_le, x <> y <> t) bend-mathlib@0.7.2.0/list.bend sorted_cons_cons_elim_le @x:Nat -> @y:Nat -> @-t:List<&2, Nat> -> @h:sorted_by(Nat, Nat.is_le, x <> y <> t) -> 0x449abff091641d732d7b9f0780df40ae/nat.le(x, y) bend-mathlib@0.7.2.0/list.bend sorted_cons_cons_elim_tail @x:Nat -> @y:Nat -> @-t:List<&2, Nat> -> @h:sorted_by(Nat, Nat.is_le, x <> y <> t) -> sorted_by(Nat, Nat.is_le, y <> t) bend-mathlib@0.7.2.0/list.bend sorted_tail @x:Nat -> @xs:List<&2, Nat> -> @h:sorted_by(Nat, Nat.is_le, x <> xs) -> sorted_by(Nat, Nat.is_le, xs) bend-mathlib@0.7.2.0/list.bend take_left @-a:Quant -> @-A:Kind(a) -> @xs:List -> @ys:List -> {List.take(a, A, List.append(a, A, xs, ys), List.length(a, A, xs)) == xs : List} bend-mathlib@0.7.2.0/list.bend drop_left @-a:Quant -> @-A:Kind(a) -> @xs:List -> @ys:List -> {List.drop(a, A, List.append(a, A, xs, ys), List.length(a, A, xs)) == ys : List} bend-mathlib@0.7.2.0/list.bend take_append @-a:Quant -> @-A:Kind(a) -> @xs:List -> @-ys:List -> @-n:Nat -> {List.take(a, A, List.append(a, A, xs, ys), Nat.add(List.length(a, A, xs), n)) == List.append(a, A, xs, List.take(a, A, ys, n)) : List} bend-mathlib@0.7.2.0/list.bend drop_append @-a:Quant -> @-A:Kind(a) -> @xs:List -> @-ys:List -> @-n:Nat -> {List.drop(a, A, List.append(a, A, xs, ys), Nat.add(List.length(a, A, xs), n)) == List.drop(a, A, ys, n) : List} bend-mathlib@0.7.2.0/list.bend take_append_of_le_length @-a:Quant -> @-A:Kind(a) -> @xs:List -> @ys:List -> @n:Nat -> @h:0x449abff091641d732d7b9f0780df40ae/nat.le(n, List.length(a, A, xs)) -> {List.take(a, A, List.append(a, A, xs, ys), n) == List.take(a, A, xs, n) : List} bend-mathlib@0.7.2.0/list.bend drop_append_of_le_length @-a:Quant -> @-A:Kind(a) -> @xs:List -> @ys:List -> @n:Nat -> @h:0x449abff091641d732d7b9f0780df40ae/nat.le(n, List.length(a, A, xs)) -> {List.drop(a, A, List.append(a, A, xs, ys), n) == List.append(a, A, List.drop(a, A, xs, n), ys) : List} bend-mathlib@0.7.2.0/list.bend map_take @-A:Type -> @-B:Type -> @-f:(@_:A -> B) -> @xs:List<&1, A> -> @n:Nat -> {List.map(A, B, f, List.take(&1, A, xs, n)) == List.take(&1, B, List.map(A, B, f, xs), n) : List<&1, B>} bend-mathlib@0.7.2.0/list.bend map_drop @-A:Type -> @-B:Type -> @-f:(@_:A -> B) -> @xs:List<&1, A> -> @n:Nat -> {List.map(A, B, f, List.drop(&1, A, xs, n)) == List.drop(&1, B, List.map(A, B, f, xs), n) : List<&1, B>} bend-mathlib@0.7.2.0/list.bend take_replicate @-A:Data -> @n:Nat -> @m:Nat -> @-x:A -> {List.take(&2, A, List.replicate(A, n, x), m) == List.replicate(A, Nat.min(m, n), x) : List<&2, A>} bend-mathlib@0.7.2.0/list.bend drop_replicate @-A:Data -> @n:Nat -> @m:Nat -> @-x:A -> {List.drop(&2, A, List.replicate(A, n, x), m) == List.replicate(A, Nat.sub(n, m), x) : List<&2, A>} bend-mathlib@0.7.2.0/list.bend length_take_le @-a:Quant -> @-A:Kind(a) -> @xs:List -> @n:Nat -> 0x449abff091641d732d7b9f0780df40ae/nat.le(List.length(a, A, List.take(a, A, xs, n)), n) bend-mathlib@0.7.2.0/list.bend length_tail @-a:Quant -> @-A:Kind(a) -> @xs:List -> {List.length(a, A, List.tail(a, A, xs)) == Nat.sub(List.length(a, A, xs), 1n) : Nat} bend-mathlib@0.7.2.0/list.bend map_id @-A:Type -> @xs:List<&1, A> -> {List.map(A, A, x => x, xs) == xs : List<&1, A>} bend-mathlib@0.7.2.0/list.bend foldr_map @-A:Type -> @-B:Type -> @-C:Type -> @-f:(@_:A -> B) -> @-g:(@_:B -> @_:C -> C) -> @xs:List<&1, A> -> @-z:C -> {List.foldr(&1, B, C, g, List.map(A, B, f, xs), z) == List.foldr(&1, A, C, x => y => g(f(x), y), xs, z) : C} bend-mathlib@0.7.2.0/list.bend foldl_map @-A:Type -> @-B:Type -> @-C:Type -> @-f:(@_:A -> B) -> @-g:(@_:C -> @_:B -> C) -> @xs:List<&1, A> -> @-z:C -> {List.foldl(&1, B, C, g, List.map(A, B, f, xs), z) == List.foldl(&1, A, C, x => y => g(x, f(y)), xs, z) : C} bend-mathlib@0.7.2.0/list.bend replicate_add @-A:Data -> @m:Nat -> @-n:Nat -> @-x:A -> {List.replicate(A, Nat.add(m, n), x) == List.append(&2, A, List.replicate(A, m, x), List.replicate(A, n, x)) : List<&2, A>} bend-mathlib@0.7.2.0/list.bend reverse_replicate @-A:Data -> @n:Nat -> @-x:A -> {List.reverse(&2, A, List.replicate(A, n, x)) == List.replicate(A, n, x) : List<&2, A>} bend-mathlib@0.7.2.0/list.bend filter_true @-A:Data -> @xs:List<&2, A> -> {List.filter(A, x => True{}, xs) == xs : List<&2, A>} bend-mathlib@0.7.2.0/list.bend filter_false @-A:Data -> @xs:List<&2, A> -> {List.filter(A, x => False{}, xs) == [] : List<&2, A>} bend-mathlib@0.7.2.0/list.bend filter_filter @-A:Data -> @-p:(@_:A -> Bool) -> @-q:(@_:A -> Bool) -> @xs:List<&2, A> -> {List.filter(A, p, List.filter(A, q, xs)) == List.filter(A, +x => Bool.and(p(x), q(x)), xs) : List<&2, A>} bend-mathlib@0.7.2.0/list.bend all_filter @-A:Data -> @-p:(@_:A -> Bool) -> @-q:(@_:A -> Bool) -> @xs:List<&2, A> -> {List.all(&2, A, q, List.filter(A, p, xs)) == List.all(&2, A, +x => Bool.or(Bool.not(p(x)), q(x)), xs) : Bool} bend-mathlib@0.7.2.0/list.bend any_filter @-A:Data -> @-p:(@_:A -> Bool) -> @-q:(@_:A -> Bool) -> @xs:List<&2, A> -> {List.any(&2, A, q, List.filter(A, p, xs)) == List.any(&2, A, +x => Bool.and(p(x), q(x)), xs) : Bool} bend-mathlib@0.7.2.0/list.bend all_map @-A:Type -> @-B:Type -> @-f:(@_:A -> B) -> @-p:(@_:B -> Bool) -> @xs:List<&1, A> -> {List.all(&1, B, p, List.map(A, B, f, xs)) == List.all(&1, A, x => p(f(x)), xs) : Bool} bend-mathlib@0.7.2.0/list.bend any_map @-A:Type -> @-B:Type -> @-f:(@_:A -> B) -> @-p:(@_:B -> Bool) -> @xs:List<&1, A> -> {List.any(&1, B, p, List.map(A, B, f, xs)) == List.any(&1, A, x => p(f(x)), xs) : Bool} bend-mathlib@0.7.2.0/list.bend all_reverse @-a:Quant -> @-A:Kind(a) -> @-f:(@_:A -> Bool) -> @xs:List -> {List.all(a, A, f, List.reverse(a, A, xs)) == List.all(a, A, f, xs) : Bool} bend-mathlib@0.7.2.0/list.bend any_reverse @-a:Quant -> @-A:Kind(a) -> @-f:(@_:A -> Bool) -> @xs:List -> {List.any(a, A, f, List.reverse(a, A, xs)) == List.any(a, A, f, xs) : Bool} bend-mathlib@0.7.2.0/list.bend contains_reverse @-A:Data -> @-eq:(@_:A -> @_:A -> Bool) -> @xs:List<&2, A> -> @+x:A -> {List.contains(A, eq, List.reverse(&2, A, xs), x) == List.contains(A, eq, xs, x) : Bool} bend-mathlib@0.7.2.0/list.bend zip_nil_left @-a:Quant -> @-A:Kind(a) -> @-b:Quant -> @-B:Kind(b) -> @-ys:List -> {List.zip(a, A, b, B, [], ys) == [] : List<&1, Pair(A, B)>} bend-mathlib@0.7.2.0/list.bend zip_nil_right @-a:Quant -> @-A:Kind(a) -> @-b:Quant -> @-B:Kind(b) -> @xs:List -> {List.zip(a, A, b, B, xs, []) == [] : List<&1, Pair(A, B)>} bend-mathlib@0.7.2.0/list.bend head_cons @-a:Quant -> @-A:Kind(a) -> @-x:A -> @-xs:List -> {List.head(a, A, x <> xs) == Some{x} : Maybe} bend-mathlib@0.7.2.0/list.bend head_append @-a:Quant -> @-A:Kind(a) -> @xs:List -> @-ys:List -> {List.head(a, A, List.append(a, A, xs, ys)) == Maybe.or(a, A, List.head(a, A, xs), List.head(a, A, ys)) : Maybe} bend-mathlib@0.7.2.0/list.bend head_map @-A:Type -> @-B:Type -> @-f:(@_:A -> B) -> @xs:List<&1, A> -> {List.head(&1, B, List.map(A, B, f, xs)) == Maybe.map(&1, A, B, f, List.head(&1, A, xs)) : Maybe<&1, B>} bend-mathlib@0.7.2.0/list.bend tail_map @-A:Type -> @-B:Type -> @-f:(@_:A -> B) -> @xs:List<&1, A> -> {List.tail(&1, B, List.map(A, B, f, xs)) == List.map(A, B, f, List.tail(&1, A, xs)) : List<&1, B>} bend-mathlib@0.7.2.0/list.bend get_cons_zero @-a:Quant -> @-A:Kind(a) -> @-x:A -> @-xs:List -> {List.get(a, A, x <> xs, 0n) == Some{x} : Maybe} bend-mathlib@0.7.2.0/list.bend get_cons_succ @-a:Quant -> @-A:Kind(a) -> @-x:A -> @-xs:List -> @-n:Nat -> {List.get(a, A, x <> xs, 1n+n) == List.get(a, A, xs, n) : Maybe} bend-mathlib@0.7.2.0/list.bend get_map @-A:Type -> @-B:Type -> @-f:(@_:A -> B) -> @xs:List<&1, A> -> @n:Nat -> {List.get(&1, B, List.map(A, B, f, xs), n) == Maybe.map(&1, A, B, f, List.get(&1, A, xs, n)) : Maybe<&1, B>} bend-mathlib@0.7.2.0/list.bend length_set @-a:Quant -> @-A:Kind(a) -> @xs:List -> @n:Nat -> @-x:A -> {List.length(a, A, List.set(a, A, xs, n, x)) == List.length(a, A, xs) : Nat} bend-mathlib@0.7.2.0/list.bend get_set_self @-a:Quant -> @-A:Kind(a) -> @xs:List -> @n:Nat -> @-x:A -> {List.get(a, A, List.set(a, A, xs, n, x), n) == Maybe.map(a, A, A, y => x, List.get(a, A, xs, n)) : Maybe} bend-mathlib@0.7.2.0/list.bend last_append_singleton @-a:Quant -> @-A:Kind(a) -> @xs:List -> @-x:A -> {List.last(a, A, List.append(a, A, xs, [x])) == Some{x} : Maybe} bend-mathlib@0.7.2.0/list.bend head_reverse @-a:Quant -> @-A:Kind(a) -> @xs:List -> {List.head(a, A, List.reverse(a, A, xs)) == List.last(a, A, xs) : Maybe} bend-mathlib@0.7.2.0/list.bend last_reverse @-a:Quant -> @-A:Kind(a) -> @xs:List -> {List.last(a, A, List.reverse(a, A, xs)) == List.head(a, A, xs) : Maybe} bend-mathlib@0.7.2.0/list.bend is_empty_iff_length_eq_zero @-a:Quant -> @-A:Kind(a) -> @xs:List -> {List.is_empty(a, A, xs) == Nat.is_eq(List.length(a, A, xs), 0n) : Bool} bend-mathlib@0.7.2.0/list.bend is_empty_append @-a:Quant -> @-A:Kind(a) -> @xs:List -> @-ys:List -> {List.is_empty(a, A, List.append(a, A, xs, ys)) == Bool.and(List.is_empty(a, A, xs), List.is_empty(a, A, ys)) : Bool} bend-mathlib@0.7.2.0/list.bend is_empty_reverse @-a:Quant -> @-A:Kind(a) -> @xs:List -> {List.is_empty(a, A, List.reverse(a, A, xs)) == List.is_empty(a, A, xs) : Bool} bend-mathlib@0.7.2.0/list.bend is_empty_map @-A:Type -> @-B:Type -> @-f:(@_:A -> B) -> @xs:List<&1, A> -> {List.is_empty(&1, B, List.map(A, B, f, xs)) == List.is_empty(&1, A, xs) : Bool} bend-mathlib@0.7.2.0/list.bend filter_reverse @-A:Data -> @-f:(@_:A -> Bool) -> @xs:List<&2, A> -> {List.filter(A, f, List.reverse(&2, A, xs)) == List.reverse(&2, A, List.filter(A, f, xs)) : List<&2, A>} bend-mathlib@0.7.2.0/list.bend foldr_cons_nil @-a:Quant -> @-A:Kind(a) -> @xs:List -> {List.foldr(a, A, List, x => acc => x <> acc, xs, []) == xs : List} bend-mathlib@0.7.2.0/list.bend foldl_reverse @-a:Quant -> @-A:Kind(a) -> @-B:Type -> @-f:(@_:B -> @_:A -> B) -> @xs:List -> @-z:B -> {List.foldl(a, A, B, f, List.reverse(a, A, xs), z) == List.foldr(a, A, B, x => y => f(y, x), xs, z) : B} bend-mathlib@0.7.2.0/list.bend foldr_reverse @-a:Quant -> @-A:Kind(a) -> @-B:Type -> @-f:(@_:A -> @_:B -> B) -> @xs:List -> @-z:B -> {List.foldr(a, A, B, f, List.reverse(a, A, xs), z) == List.foldl(a, A, B, x => y => f(y, x), xs, z) : B} bend-mathlib@0.7.2.0/list.bend range_succ @n:Nat -> {List.range(1n+n) == List.append(&2, Nat, List.range(n), [n]) : List<&2, Nat>} bend-mathlib@0.7.2.0/list.bend find_append @-A:Data -> @-f:(@_:A -> Bool) -> @xs:List<&2, A> -> @ys:List<&2, A> -> {List.find(A, f, List.append(&2, A, xs, ys)) == Maybe.or(&2, A, List.find(A, f, xs), List.find(A, f, ys)) : Maybe<&2, A>} bend-mathlib@0.7.2.0/list.bend all_eq_not_any_not @-a:Quant -> @-A:Kind(a) -> @-f:(@_:A -> Bool) -> @xs:List -> {List.all(a, A, f, xs) == Bool.not(List.any(a, A, x => Bool.not(f(x)), xs)) : Bool} bend-mathlib@0.7.2.0/list.bend any_eq_not_all_not @-a:Quant -> @-A:Kind(a) -> @-f:(@_:A -> Bool) -> @xs:List -> {List.any(a, A, f, xs) == Bool.not(List.all(a, A, x => Bool.not(f(x)), xs)) : Bool} bend-mathlib@0.7.2.0/list.bend length_singleton @-a:Quant -> @-A:Kind(a) -> @-x:A -> {List.length(a, A, [x]) == 1n : Nat} bend-mathlib@0.7.2.0/list.bend reverse_cons @-a:Quant -> @-A:Kind(a) -> @-x:A -> @xs:List -> {List.reverse(a, A, x <> xs) == List.append(a, A, List.reverse(a, A, xs), [x]) : List} bend-mathlib@0.7.2.0/list.bend take_succ @-a:Quant -> @-A:Kind(a) -> @-x:A -> @-xs:List -> @-n:Nat -> {List.take(a, A, x <> xs, 1n+n) == x <> List.take(a, A, xs, n) : List} bend-mathlib@0.7.2.0/list.bend drop_succ @-a:Quant -> @-A:Kind(a) -> @-x:A -> @-xs:List -> @-n:Nat -> {List.drop(a, A, x <> xs, 1n+n) == List.drop(a, A, xs, n) : List} bend-mathlib@0.7.2.0/list.bend append_nil_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> {xs == List.append(a, A, xs, []) : List} bend-mathlib@0.7.2.0/list.bend nil_append_sym @-a:Quant -> @-A:Kind(a) -> @-xs:List -> {xs == List.append(a, A, [], xs) : List} bend-mathlib@0.7.2.0/list.bend append_assoc_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> @-ys:List -> @-zs:List -> {List.append(a, A, xs, List.append(a, A, ys, zs)) == List.append(a, A, List.append(a, A, xs, ys), zs) : List} bend-mathlib@0.7.2.0/list.bend length_append_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> @-ys:List -> {Nat.add(List.length(a, A, xs), List.length(a, A, ys)) == List.length(a, A, List.append(a, A, xs, ys)) : Nat} bend-mathlib@0.7.2.0/list.bend reverse_go_spec_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> @-acc:List -> {List.append(a, A, List.reverse(a, A, xs), acc) == List.reverse.go(a, A, xs, acc) : List} bend-mathlib@0.7.2.0/list.bend reverse_append_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> @ys:List -> {List.append(a, A, List.reverse(a, A, ys), List.reverse(a, A, xs)) == List.reverse(a, A, List.append(a, A, xs, ys)) : List} bend-mathlib@0.7.2.0/list.bend reverse_reverse_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> {xs == List.reverse(a, A, List.reverse(a, A, xs)) : List} bend-mathlib@0.7.2.0/list.bend length_reverse_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> {List.length(a, A, xs) == List.length(a, A, List.reverse(a, A, xs)) : Nat} bend-mathlib@0.7.2.0/list.bend foldr_append_sym @-a:Quant -> @-A:Kind(a) -> @-B:Type -> @-f:(@_:A -> @_:B -> B) -> @xs:List -> @-ys:List -> @-z:B -> {List.foldr(a, A, B, f, xs, List.foldr(a, A, B, f, ys, z)) == List.foldr(a, A, B, f, List.append(a, A, xs, ys), z) : B} bend-mathlib@0.7.2.0/list.bend take_append_drop_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> @n:Nat -> {xs == List.append(a, A, List.take(a, A, xs, n), List.drop(a, A, xs, n)) : List} bend-mathlib@0.7.2.0/list.bend length_map_sym @-A:Type -> @-B:Type -> @-f:(@_:A -> B) -> @xs:List<&1, A> -> {List.length(&1, A, xs) == List.length(&1, B, List.map(A, B, f, xs)) : Nat} bend-mathlib@0.7.2.0/list.bend map_append_sym @-A:Type -> @-B:Type -> @-f:(@_:A -> B) -> @xs:List<&1, A> -> @-ys:List<&1, A> -> {List.append(&1, B, List.map(A, B, f, xs), List.map(A, B, f, ys)) == List.map(A, B, f, List.append(&1, A, xs, ys)) : List<&1, B>} bend-mathlib@0.7.2.0/list.bend map_map_sym @-A:Type -> @-B:Type -> @-C:Type -> @-f:(@_:A -> B) -> @-g:(@_:B -> C) -> @xs:List<&1, A> -> {List.map(A, C, x => g(f(x)), xs) == List.map(B, C, g, List.map(A, B, f, xs)) : List<&1, C>} bend-mathlib@0.7.2.0/list.bend take_zero_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> {[] == List.take(a, A, xs, 0n) : List} bend-mathlib@0.7.2.0/list.bend drop_zero_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> {xs == List.drop(a, A, xs, 0n) : List} bend-mathlib@0.7.2.0/list.bend take_nil_sym @-a:Quant -> @-A:Kind(a) -> @-n:Nat -> {[] == List.take(a, A, [], n) : List} bend-mathlib@0.7.2.0/list.bend drop_nil_sym @-a:Quant -> @-A:Kind(a) -> @-n:Nat -> {[] == List.drop(a, A, [], n) : List} bend-mathlib@0.7.2.0/list.bend length_take_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> @n:Nat -> {Nat.min(n, List.length(a, A, xs)) == List.length(a, A, List.take(a, A, xs, n)) : Nat} bend-mathlib@0.7.2.0/list.bend length_drop_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> @n:Nat -> {Nat.sub(List.length(a, A, xs), n) == List.length(a, A, List.drop(a, A, xs, n)) : Nat} bend-mathlib@0.7.2.0/list.bend take_length_sym @-A:Data -> @+xs:List<&2, A> -> {xs == List.take(&2, A, xs, List.length(&2, A, xs)) : List<&2, A>} bend-mathlib@0.7.2.0/list.bend drop_length_sym @-A:Data -> @+xs:List<&2, A> -> {[] == List.drop(&2, A, xs, List.length(&2, A, xs)) : List<&2, A>} bend-mathlib@0.7.2.0/list.bend take_take_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> @n:Nat -> @m:Nat -> {List.take(a, A, xs, Nat.min(n, m)) == List.take(a, A, List.take(a, A, xs, n), m) : List} bend-mathlib@0.7.2.0/list.bend drop_drop_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> @n:Nat -> @-m:Nat -> {List.drop(a, A, xs, Nat.add(n, m)) == List.drop(a, A, List.drop(a, A, xs, n), m) : List} bend-mathlib@0.7.2.0/list.bend reverse_nil_sym @-a:Quant -> @-A:Kind(a) -> {[] == List.reverse(a, A, []) : List} bend-mathlib@0.7.2.0/list.bend reverse_singleton_sym @-a:Quant -> @-A:Kind(a) -> @-x:A -> {[x] == List.reverse(a, A, [x]) : List} bend-mathlib@0.7.2.0/list.bend length_replicate_sym @-A:Data -> @n:Nat -> @-x:A -> {n == List.length(&2, A, List.replicate(A, n, x)) : Nat} bend-mathlib@0.7.2.0/list.bend length_range_sym @n:Nat -> {n == List.length(&2, Nat, List.range(n)) : Nat} bend-mathlib@0.7.2.0/list.bend length_zip_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> @ys:List -> {Nat.min(List.length(a, A, xs), List.length(a, A, ys)) == List.length(&1, Pair(A, A), List.zip(a, A, a, A, xs, ys)) : Nat} bend-mathlib@0.7.2.0/list.bend append_cons_sym @-a:Quant -> @-A:Kind(a) -> @-x:A -> @-xs:List -> @-ys:List -> {x <> List.append(a, A, xs, ys) == List.append(a, A, x <> xs, ys) : List} bend-mathlib@0.7.2.0/list.bend length_nil_sym @-a:Quant -> @-A:Kind(a) -> {0n == List.length(a, A, []) : Nat} bend-mathlib@0.7.2.0/list.bend length_cons_sym @-a:Quant -> @-A:Kind(a) -> @-x:A -> @-xs:List -> {1n+List.length(a, A, xs) == List.length(a, A, x <> xs) : Nat} bend-mathlib@0.7.2.0/list.bend concat_append_sym @-a:Quant -> @-A:Kind(a) -> @xss:List> -> @-yss:List> -> {List.append(a, A, List.concat(a, A, xss), List.concat(a, A, yss)) == List.concat(a, A, List.append(a, List, xss, yss)) : List} bend-mathlib@0.7.2.0/list.bend foldl_append_sym @-a:Quant -> @-A:Kind(a) -> @-B:Type -> @-f:(@_:B -> @_:A -> B) -> @xs:List -> @-ys:List -> @-z:B -> {List.foldl(a, A, B, f, ys, List.foldl(a, A, B, f, xs, z)) == List.foldl(a, A, B, f, List.append(a, A, xs, ys), z) : B} bend-mathlib@0.7.2.0/list.bend map_reverse_sym @-A:Type -> @-B:Type -> @-f:(@_:A -> B) -> @xs:List<&1, A> -> {List.reverse(&1, B, List.map(A, B, f, xs)) == List.map(A, B, f, List.reverse(&1, A, xs)) : List<&1, B>} bend-mathlib@0.7.2.0/list.bend all_append_sym @-a:Quant -> @-A:Kind(a) -> @-f:(@_:A -> Bool) -> @xs:List -> @-ys:List -> {Bool.and(List.all(a, A, f, xs), List.all(a, A, f, ys)) == List.all(a, A, f, List.append(a, A, xs, ys)) : Bool} bend-mathlib@0.7.2.0/list.bend any_append_sym @-a:Quant -> @-A:Kind(a) -> @-f:(@_:A -> Bool) -> @xs:List -> @-ys:List -> {Bool.or(List.any(a, A, f, xs), List.any(a, A, f, ys)) == List.any(a, A, f, List.append(a, A, xs, ys)) : Bool} bend-mathlib@0.7.2.0/list.bend filter_append_sym @-A:Data -> @-f:(@_:A -> Bool) -> @xs:List<&2, A> -> @ys:List<&2, A> -> {List.append(&2, A, List.filter(A, f, xs), List.filter(A, f, ys)) == List.filter(A, f, List.append(&2, A, xs, ys)) : List<&2, A>} bend-mathlib@0.7.2.0/list.bend contains_append_sym @-A:Data -> @-eq:(@_:A -> @_:A -> Bool) -> @xs:List<&2, A> -> @-ys:List<&2, A> -> @+x:A -> {Bool.or(List.contains(A, eq, xs, x), List.contains(A, eq, ys, x)) == List.contains(A, eq, List.append(&2, A, xs, ys), x) : Bool} bend-mathlib@0.7.2.0/list.bend length_filter_le_sym @-A:Data -> @-f:(@_:A -> Bool) -> @xs:List<&2, A> -> {True{} == Nat.is_le(List.length(&2, A, List.filter(A, f, xs)), List.length(&2, A, xs)) : Bool} bend-mathlib@0.7.2.0/list.bend take_left_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> @ys:List -> {xs == List.take(a, A, List.append(a, A, xs, ys), List.length(a, A, xs)) : List} bend-mathlib@0.7.2.0/list.bend drop_left_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> @ys:List -> {ys == List.drop(a, A, List.append(a, A, xs, ys), List.length(a, A, xs)) : List} bend-mathlib@0.7.2.0/list.bend take_append_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> @-ys:List -> @-n:Nat -> {List.append(a, A, xs, List.take(a, A, ys, n)) == List.take(a, A, List.append(a, A, xs, ys), Nat.add(List.length(a, A, xs), n)) : List} bend-mathlib@0.7.2.0/list.bend drop_append_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> @-ys:List -> @-n:Nat -> {List.drop(a, A, ys, n) == List.drop(a, A, List.append(a, A, xs, ys), Nat.add(List.length(a, A, xs), n)) : List} bend-mathlib@0.7.2.0/list.bend take_append_of_le_length_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> @ys:List -> @n:Nat -> @h:0x449abff091641d732d7b9f0780df40ae/nat.le(n, List.length(a, A, xs)) -> {List.take(a, A, xs, n) == List.take(a, A, List.append(a, A, xs, ys), n) : List} bend-mathlib@0.7.2.0/list.bend drop_append_of_le_length_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> @ys:List -> @n:Nat -> @h:0x449abff091641d732d7b9f0780df40ae/nat.le(n, List.length(a, A, xs)) -> {List.append(a, A, List.drop(a, A, xs, n), ys) == List.drop(a, A, List.append(a, A, xs, ys), n) : List} bend-mathlib@0.7.2.0/list.bend map_take_sym @-A:Type -> @-B:Type -> @-f:(@_:A -> B) -> @xs:List<&1, A> -> @n:Nat -> {List.take(&1, B, List.map(A, B, f, xs), n) == List.map(A, B, f, List.take(&1, A, xs, n)) : List<&1, B>} bend-mathlib@0.7.2.0/list.bend map_drop_sym @-A:Type -> @-B:Type -> @-f:(@_:A -> B) -> @xs:List<&1, A> -> @n:Nat -> {List.drop(&1, B, List.map(A, B, f, xs), n) == List.map(A, B, f, List.drop(&1, A, xs, n)) : List<&1, B>} bend-mathlib@0.7.2.0/list.bend take_replicate_sym @-A:Data -> @n:Nat -> @m:Nat -> @-x:A -> {List.replicate(A, Nat.min(m, n), x) == List.take(&2, A, List.replicate(A, n, x), m) : List<&2, A>} bend-mathlib@0.7.2.0/list.bend drop_replicate_sym @-A:Data -> @n:Nat -> @m:Nat -> @-x:A -> {List.replicate(A, Nat.sub(n, m), x) == List.drop(&2, A, List.replicate(A, n, x), m) : List<&2, A>} bend-mathlib@0.7.2.0/list.bend length_tail_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> {Nat.sub(List.length(a, A, xs), 1n) == List.length(a, A, List.tail(a, A, xs)) : Nat} bend-mathlib@0.7.2.0/list.bend map_id_sym @-A:Type -> @xs:List<&1, A> -> {xs == List.map(A, A, x => x, xs) : List<&1, A>} bend-mathlib@0.7.2.0/list.bend foldr_map_sym @-A:Type -> @-B:Type -> @-C:Type -> @-f:(@_:A -> B) -> @-g:(@_:B -> @_:C -> C) -> @xs:List<&1, A> -> @-z:C -> {List.foldr(&1, A, C, x => y => g(f(x), y), xs, z) == List.foldr(&1, B, C, g, List.map(A, B, f, xs), z) : C} bend-mathlib@0.7.2.0/list.bend foldl_map_sym @-A:Type -> @-B:Type -> @-C:Type -> @-f:(@_:A -> B) -> @-g:(@_:C -> @_:B -> C) -> @xs:List<&1, A> -> @-z:C -> {List.foldl(&1, A, C, x => y => g(x, f(y)), xs, z) == List.foldl(&1, B, C, g, List.map(A, B, f, xs), z) : C} bend-mathlib@0.7.2.0/list.bend replicate_add_sym @-A:Data -> @m:Nat -> @-n:Nat -> @-x:A -> {List.append(&2, A, List.replicate(A, m, x), List.replicate(A, n, x)) == List.replicate(A, Nat.add(m, n), x) : List<&2, A>} bend-mathlib@0.7.2.0/list.bend reverse_replicate_sym @-A:Data -> @n:Nat -> @-x:A -> {List.replicate(A, n, x) == List.reverse(&2, A, List.replicate(A, n, x)) : List<&2, A>} bend-mathlib@0.7.2.0/list.bend filter_true_sym @-A:Data -> @xs:List<&2, A> -> {xs == List.filter(A, x => True{}, xs) : List<&2, A>} bend-mathlib@0.7.2.0/list.bend filter_false_sym @-A:Data -> @xs:List<&2, A> -> {[] == List.filter(A, x => False{}, xs) : List<&2, A>} bend-mathlib@0.7.2.0/list.bend filter_filter_sym @-A:Data -> @-p:(@_:A -> Bool) -> @-q:(@_:A -> Bool) -> @xs:List<&2, A> -> {List.filter(A, +x => Bool.and(p(x), q(x)), xs) == List.filter(A, p, List.filter(A, q, xs)) : List<&2, A>} bend-mathlib@0.7.2.0/list.bend all_filter_sym @-A:Data -> @-p:(@_:A -> Bool) -> @-q:(@_:A -> Bool) -> @xs:List<&2, A> -> {List.all(&2, A, +x => Bool.or(Bool.not(p(x)), q(x)), xs) == List.all(&2, A, q, List.filter(A, p, xs)) : Bool} bend-mathlib@0.7.2.0/list.bend any_filter_sym @-A:Data -> @-p:(@_:A -> Bool) -> @-q:(@_:A -> Bool) -> @xs:List<&2, A> -> {List.any(&2, A, +x => Bool.and(p(x), q(x)), xs) == List.any(&2, A, q, List.filter(A, p, xs)) : Bool} bend-mathlib@0.7.2.0/list.bend all_map_sym @-A:Type -> @-B:Type -> @-f:(@_:A -> B) -> @-p:(@_:B -> Bool) -> @xs:List<&1, A> -> {List.all(&1, A, x => p(f(x)), xs) == List.all(&1, B, p, List.map(A, B, f, xs)) : Bool} bend-mathlib@0.7.2.0/list.bend any_map_sym @-A:Type -> @-B:Type -> @-f:(@_:A -> B) -> @-p:(@_:B -> Bool) -> @xs:List<&1, A> -> {List.any(&1, A, x => p(f(x)), xs) == List.any(&1, B, p, List.map(A, B, f, xs)) : Bool} bend-mathlib@0.7.2.0/list.bend all_reverse_sym @-a:Quant -> @-A:Kind(a) -> @-f:(@_:A -> Bool) -> @xs:List -> {List.all(a, A, f, xs) == List.all(a, A, f, List.reverse(a, A, xs)) : Bool} bend-mathlib@0.7.2.0/list.bend any_reverse_sym @-a:Quant -> @-A:Kind(a) -> @-f:(@_:A -> Bool) -> @xs:List -> {List.any(a, A, f, xs) == List.any(a, A, f, List.reverse(a, A, xs)) : Bool} bend-mathlib@0.7.2.0/list.bend contains_reverse_sym @-A:Data -> @-eq:(@_:A -> @_:A -> Bool) -> @xs:List<&2, A> -> @+x:A -> {List.contains(A, eq, xs, x) == List.contains(A, eq, List.reverse(&2, A, xs), x) : Bool} bend-mathlib@0.7.2.0/list.bend zip_nil_left_sym @-a:Quant -> @-A:Kind(a) -> @-b:Quant -> @-B:Kind(b) -> @-ys:List -> {[] == List.zip(a, A, b, B, [], ys) : List<&1, Pair(A, B)>} bend-mathlib@0.7.2.0/list.bend zip_nil_right_sym @-a:Quant -> @-A:Kind(a) -> @-b:Quant -> @-B:Kind(b) -> @xs:List -> {[] == List.zip(a, A, b, B, xs, []) : List<&1, Pair(A, B)>} bend-mathlib@0.7.2.0/list.bend head_cons_sym @-a:Quant -> @-A:Kind(a) -> @-x:A -> @-xs:List -> {Some{x} == List.head(a, A, x <> xs) : Maybe} bend-mathlib@0.7.2.0/list.bend head_append_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> @-ys:List -> {Maybe.or(a, A, List.head(a, A, xs), List.head(a, A, ys)) == List.head(a, A, List.append(a, A, xs, ys)) : Maybe} bend-mathlib@0.7.2.0/list.bend head_map_sym @-A:Type -> @-B:Type -> @-f:(@_:A -> B) -> @xs:List<&1, A> -> {Maybe.map(&1, A, B, f, List.head(&1, A, xs)) == List.head(&1, B, List.map(A, B, f, xs)) : Maybe<&1, B>} bend-mathlib@0.7.2.0/list.bend tail_map_sym @-A:Type -> @-B:Type -> @-f:(@_:A -> B) -> @xs:List<&1, A> -> {List.map(A, B, f, List.tail(&1, A, xs)) == List.tail(&1, B, List.map(A, B, f, xs)) : List<&1, B>} bend-mathlib@0.7.2.0/list.bend get_cons_zero_sym @-a:Quant -> @-A:Kind(a) -> @-x:A -> @-xs:List -> {Some{x} == List.get(a, A, x <> xs, 0n) : Maybe} bend-mathlib@0.7.2.0/list.bend get_cons_succ_sym @-a:Quant -> @-A:Kind(a) -> @-x:A -> @-xs:List -> @-n:Nat -> {List.get(a, A, xs, n) == List.get(a, A, x <> xs, 1n+n) : Maybe} bend-mathlib@0.7.2.0/list.bend get_map_sym @-A:Type -> @-B:Type -> @-f:(@_:A -> B) -> @xs:List<&1, A> -> @n:Nat -> {Maybe.map(&1, A, B, f, List.get(&1, A, xs, n)) == List.get(&1, B, List.map(A, B, f, xs), n) : Maybe<&1, B>} bend-mathlib@0.7.2.0/list.bend length_set_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> @n:Nat -> @-x:A -> {List.length(a, A, xs) == List.length(a, A, List.set(a, A, xs, n, x)) : Nat} bend-mathlib@0.7.2.0/list.bend get_set_self_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> @n:Nat -> @-x:A -> {Maybe.map(a, A, A, y => x, List.get(a, A, xs, n)) == List.get(a, A, List.set(a, A, xs, n, x), n) : Maybe} bend-mathlib@0.7.2.0/list.bend last_append_singleton_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> @-x:A -> {Some{x} == List.last(a, A, List.append(a, A, xs, [x])) : Maybe} bend-mathlib@0.7.2.0/list.bend head_reverse_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> {List.last(a, A, xs) == List.head(a, A, List.reverse(a, A, xs)) : Maybe} bend-mathlib@0.7.2.0/list.bend last_reverse_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> {List.head(a, A, xs) == List.last(a, A, List.reverse(a, A, xs)) : Maybe} bend-mathlib@0.7.2.0/list.bend is_empty_iff_length_eq_zero_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> {Nat.is_eq(List.length(a, A, xs), 0n) == List.is_empty(a, A, xs) : Bool} bend-mathlib@0.7.2.0/list.bend is_empty_append_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> @-ys:List -> {Bool.and(List.is_empty(a, A, xs), List.is_empty(a, A, ys)) == List.is_empty(a, A, List.append(a, A, xs, ys)) : Bool} bend-mathlib@0.7.2.0/list.bend is_empty_reverse_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> {List.is_empty(a, A, xs) == List.is_empty(a, A, List.reverse(a, A, xs)) : Bool} bend-mathlib@0.7.2.0/list.bend is_empty_map_sym @-A:Type -> @-B:Type -> @-f:(@_:A -> B) -> @xs:List<&1, A> -> {List.is_empty(&1, A, xs) == List.is_empty(&1, B, List.map(A, B, f, xs)) : Bool} bend-mathlib@0.7.2.0/list.bend filter_reverse_sym @-A:Data -> @-f:(@_:A -> Bool) -> @xs:List<&2, A> -> {List.reverse(&2, A, List.filter(A, f, xs)) == List.filter(A, f, List.reverse(&2, A, xs)) : List<&2, A>} bend-mathlib@0.7.2.0/list.bend foldr_cons_nil_sym @-a:Quant -> @-A:Kind(a) -> @xs:List -> {xs == List.foldr(a, A, List, x => acc => x <> acc, xs, []) : List} bend-mathlib@0.7.2.0/list.bend foldl_reverse_sym @-a:Quant -> @-A:Kind(a) -> @-B:Type -> @-f:(@_:B -> @_:A -> B) -> @xs:List -> @-z:B -> {List.foldr(a, A, B, x => y => f(y, x), xs, z) == List.foldl(a, A, B, f, List.reverse(a, A, xs), z) : B} bend-mathlib@0.7.2.0/list.bend foldr_reverse_sym @-a:Quant -> @-A:Kind(a) -> @-B:Type -> @-f:(@_:A -> @_:B -> B) -> @xs:List -> @-z:B -> {List.foldl(a, A, B, x => y => f(y, x), xs, z) == List.foldr(a, A, B, f, List.reverse(a, A, xs), z) : B} bend-mathlib@0.7.2.0/list.bend range_succ_sym @n:Nat -> {List.append(&2, Nat, List.range(n), [n]) == List.range(1n+n) : List<&2, Nat>} bend-mathlib@0.7.2.0/list.bend find_append_sym @-A:Data -> @-f:(@_:A -> Bool) -> @xs:List<&2, A> -> @ys:List<&2, A> -> {Maybe.or(&2, A, List.find(A, f, xs), List.find(A, f, ys)) == List.find(A, f, List.append(&2, A, xs, ys)) : Maybe<&2, A>} bend-mathlib@0.7.2.0/list.bend all_eq_not_any_not_sym @-a:Quant -> @-A:Kind(a) -> @-f:(@_:A -> Bool) -> @xs:List -> {Bool.not(List.any(a, A, x => Bool.not(f(x)), xs)) == List.all(a, A, f, xs) : Bool} bend-mathlib@0.7.2.0/list.bend any_eq_not_all_not_sym @-a:Quant -> @-A:Kind(a) -> @-f:(@_:A -> Bool) -> @xs:List -> {Bool.not(List.all(a, A, x => Bool.not(f(x)), xs)) == List.any(a, A, f, xs) : Bool} bend-mathlib@0.7.2.0/list.bend length_singleton_sym @-a:Quant -> @-A:Kind(a) -> @-x:A -> {1n == List.length(a, A, [x]) : Nat} bend-mathlib@0.7.2.0/list.bend reverse_cons_sym @-a:Quant -> @-A:Kind(a) -> @-x:A -> @xs:List -> {List.append(a, A, List.reverse(a, A, xs), [x]) == List.reverse(a, A, x <> xs) : List} bend-mathlib@0.7.2.0/list.bend take_succ_sym @-a:Quant -> @-A:Kind(a) -> @-x:A -> @-xs:List -> @-n:Nat -> {x <> List.take(a, A, xs, n) == List.take(a, A, x <> xs, 1n+n) : List} bend-mathlib@0.7.2.0/list.bend drop_succ_sym @-a:Quant -> @-A:Kind(a) -> @-x:A -> @-xs:List -> @-n:Nat -> {List.drop(a, A, xs, n) == List.drop(a, A, x <> xs, 1n+n) : List} bend-mathlib@0.7.2.0/maybe.bend maybe_pure_bind @-A:Data -> @-B:Data -> @-f:(@_:A -> Maybe<&2, B>) -> @-x:A -> {Maybe.bind(&2, A, B, Maybe.pure(&2, A, x), f) == f(x) : Maybe<&2, B>} bend-mathlib@0.7.2.0/maybe.bend maybe_bind_pure @-A:Data -> @m:Maybe<&2, A> -> {Maybe.bind(&2, A, A, m, x => Maybe.pure(&2, A, x)) == m : Maybe<&2, A>} bend-mathlib@0.7.2.0/maybe.bend maybe_bind_assoc @-A:Data -> @-B:Data -> @-C:Data -> @-f:(@_:A -> Maybe<&2, B>) -> @-g:(@_:B -> Maybe<&2, C>) -> @m:Maybe<&2, A> -> {Maybe.bind(&2, B, C, Maybe.bind(&2, A, B, m, f), g) == Maybe.bind(&2, A, C, m, x => Maybe.bind(&2, B, C, f(x), g)) : Maybe<&2, C>} bend-mathlib@0.7.2.0/maybe.bend maybe_map_pure @-A:Data -> @-B:Data -> @-f:(@_:A -> B) -> @-x:A -> {Maybe.map(&2, A, B, f, Maybe.pure(&2, A, x)) == Maybe.pure(&2, B, f(x)) : Maybe<&2, B>} bend-mathlib@0.7.2.0/maybe.bend maybe_map_compose @-A:Data -> @-B:Data -> @-C:Data -> @-f:(@_:A -> B) -> @-g:(@_:B -> C) -> @m:Maybe<&2, A> -> {Maybe.map(&2, B, C, g, Maybe.map(&2, A, B, f, m)) == Maybe.map(&2, A, C, x => g(f(x)), m) : Maybe<&2, C>} bend-mathlib@0.7.2.0/maybe.bend maybe_map_id @-A:Data -> @m:Maybe<&2, A> -> {Maybe.map(&2, A, A, x => x, m) == m : Maybe<&2, A>} bend-mathlib@0.7.2.0/maybe.bend maybe_bind_none @-A:Data -> @-B:Data -> @m:Maybe<&2, A> -> {Maybe.bind(&2, A, B, m, x => None{}) == None{} : Maybe<&2, B>} bend-mathlib@0.7.2.0/maybe.bend maybe_map_eq_bind @-A:Data -> @-B:Data -> @-f:(@_:A -> B) -> @m:Maybe<&2, A> -> {Maybe.map(&2, A, B, f, m) == Maybe.bind(&2, A, B, m, x => Maybe.pure(&2, B, f(x))) : Maybe<&2, B>} bend-mathlib@0.7.2.0/maybe.bend maybe_is_some_map @-A:Data -> @-B:Data -> @-f:(@_:A -> B) -> @m:Maybe<&2, A> -> {Maybe.is_some(&2, B, Maybe.map(&2, A, B, f, m)) == Maybe.is_some(&2, A, m) : Bool} bend-mathlib@0.7.2.0/maybe.bend maybe_is_none_map @-A:Data -> @-B:Data -> @-f:(@_:A -> B) -> @m:Maybe<&2, A> -> {Maybe.is_none(&2, B, Maybe.map(&2, A, B, f, m)) == Maybe.is_none(&2, A, m) : Bool} bend-mathlib@0.7.2.0/maybe.bend maybe_default_map @-A:Data -> @-B:Data -> @-f:(@_:A -> B) -> @m:Maybe<&2, A> -> @-d:A -> {Maybe.default(&2, B, Maybe.map(&2, A, B, f, m), f(d)) == f(Maybe.default(&2, A, m, d)) : B} bend-mathlib@0.7.2.0/maybe.bend maybe_or_none @-A:Data -> @m:Maybe<&2, A> -> {Maybe.or(&2, A, m, None{}) == m : Maybe<&2, A>} bend-mathlib@0.7.2.0/maybe.bend maybe_or_assoc @-A:Data -> @m:Maybe<&2, A> -> @-n:Maybe<&2, A> -> @-k:Maybe<&2, A> -> {Maybe.or(&2, A, Maybe.or(&2, A, m, n), k) == Maybe.or(&2, A, m, Maybe.or(&2, A, n, k)) : Maybe<&2, A>} bend-mathlib@0.7.2.0/maybe.bend maybe_bind_map @-A:Data -> @-B:Data -> @-C:Data -> @-f:(@_:A -> B) -> @-g:(@_:B -> Maybe<&2, C>) -> @m:Maybe<&2, A> -> {Maybe.bind(&2, B, C, Maybe.map(&2, A, B, f, m), g) == Maybe.bind(&2, A, C, m, x => g(f(x))) : Maybe<&2, C>} bend-mathlib@0.7.2.0/maybe.bend maybe_map_bind @-A:Data -> @-B:Data -> @-C:Data -> @-f:(@_:A -> Maybe<&2, B>) -> @-g:(@_:B -> C) -> @m:Maybe<&2, A> -> {Maybe.map(&2, B, C, g, Maybe.bind(&2, A, B, m, f)) == Maybe.bind(&2, A, C, m, x => Maybe.map(&2, B, C, g, f(x))) : Maybe<&2, C>} bend-mathlib@0.7.2.0/maybe.bend maybe_pure_bind_sym @-A:Data -> @-B:Data -> @-f:(@_:A -> Maybe<&2, B>) -> @-x:A -> {f(x) == Maybe.bind(&2, A, B, Maybe.pure(&2, A, x), f) : Maybe<&2, B>} bend-mathlib@0.7.2.0/maybe.bend maybe_bind_pure_sym @-A:Data -> @m:Maybe<&2, A> -> {m == Maybe.bind(&2, A, A, m, x => Maybe.pure(&2, A, x)) : Maybe<&2, A>} bend-mathlib@0.7.2.0/maybe.bend maybe_bind_assoc_sym @-A:Data -> @-B:Data -> @-C:Data -> @-f:(@_:A -> Maybe<&2, B>) -> @-g:(@_:B -> Maybe<&2, C>) -> @m:Maybe<&2, A> -> {Maybe.bind(&2, A, C, m, x => Maybe.bind(&2, B, C, f(x), g)) == Maybe.bind(&2, B, C, Maybe.bind(&2, A, B, m, f), g) : Maybe<&2, C>} bend-mathlib@0.7.2.0/maybe.bend maybe_map_pure_sym @-A:Data -> @-B:Data -> @-f:(@_:A -> B) -> @-x:A -> {Maybe.pure(&2, B, f(x)) == Maybe.map(&2, A, B, f, Maybe.pure(&2, A, x)) : Maybe<&2, B>} bend-mathlib@0.7.2.0/maybe.bend maybe_map_compose_sym @-A:Data -> @-B:Data -> @-C:Data -> @-f:(@_:A -> B) -> @-g:(@_:B -> C) -> @m:Maybe<&2, A> -> {Maybe.map(&2, A, C, x => g(f(x)), m) == Maybe.map(&2, B, C, g, Maybe.map(&2, A, B, f, m)) : Maybe<&2, C>} bend-mathlib@0.7.2.0/maybe.bend maybe_map_id_sym @-A:Data -> @m:Maybe<&2, A> -> {m == Maybe.map(&2, A, A, x => x, m) : Maybe<&2, A>} bend-mathlib@0.7.2.0/maybe.bend maybe_bind_none_sym @-A:Data -> @-B:Data -> @m:Maybe<&2, A> -> {None{} == Maybe.bind(&2, A, B, m, x => None{}) : Maybe<&2, B>} bend-mathlib@0.7.2.0/maybe.bend maybe_map_eq_bind_sym @-A:Data -> @-B:Data -> @-f:(@_:A -> B) -> @m:Maybe<&2, A> -> {Maybe.bind(&2, A, B, m, x => Maybe.pure(&2, B, f(x))) == Maybe.map(&2, A, B, f, m) : Maybe<&2, B>} bend-mathlib@0.7.2.0/maybe.bend maybe_is_some_map_sym @-A:Data -> @-B:Data -> @-f:(@_:A -> B) -> @m:Maybe<&2, A> -> {Maybe.is_some(&2, A, m) == Maybe.is_some(&2, B, Maybe.map(&2, A, B, f, m)) : Bool} bend-mathlib@0.7.2.0/maybe.bend maybe_is_none_map_sym @-A:Data -> @-B:Data -> @-f:(@_:A -> B) -> @m:Maybe<&2, A> -> {Maybe.is_none(&2, A, m) == Maybe.is_none(&2, B, Maybe.map(&2, A, B, f, m)) : Bool} bend-mathlib@0.7.2.0/maybe.bend maybe_default_map_sym @-A:Data -> @-B:Data -> @-f:(@_:A -> B) -> @m:Maybe<&2, A> -> @-d:A -> {f(Maybe.default(&2, A, m, d)) == Maybe.default(&2, B, Maybe.map(&2, A, B, f, m), f(d)) : B} bend-mathlib@0.7.2.0/maybe.bend maybe_or_none_sym @-A:Data -> @m:Maybe<&2, A> -> {m == Maybe.or(&2, A, m, None{}) : Maybe<&2, A>} bend-mathlib@0.7.2.0/maybe.bend maybe_or_assoc_sym @-A:Data -> @m:Maybe<&2, A> -> @-n:Maybe<&2, A> -> @-k:Maybe<&2, A> -> {Maybe.or(&2, A, m, Maybe.or(&2, A, n, k)) == Maybe.or(&2, A, Maybe.or(&2, A, m, n), k) : Maybe<&2, A>} bend-mathlib@0.7.2.0/maybe.bend maybe_bind_map_sym @-A:Data -> @-B:Data -> @-C:Data -> @-f:(@_:A -> B) -> @-g:(@_:B -> Maybe<&2, C>) -> @m:Maybe<&2, A> -> {Maybe.bind(&2, A, C, m, x => g(f(x))) == Maybe.bind(&2, B, C, Maybe.map(&2, A, B, f, m), g) : Maybe<&2, C>} bend-mathlib@0.7.2.0/maybe.bend maybe_map_bind_sym @-A:Data -> @-B:Data -> @-C:Data -> @-f:(@_:A -> Maybe<&2, B>) -> @-g:(@_:B -> C) -> @m:Maybe<&2, A> -> {Maybe.bind(&2, A, C, m, x => Maybe.map(&2, B, C, g, f(x))) == Maybe.map(&2, B, C, g, Maybe.bind(&2, A, B, m, f)) : Maybe<&2, C>} bend-mathlib@0.7.2.0/nat.bend add_zero @x:Nat -> {Nat.add(x, 0n) == x : Nat} bend-mathlib@0.7.2.0/nat.bend zero_add @-x:Nat -> {Nat.add(0n, x) == x : Nat} bend-mathlib@0.7.2.0/nat.bend add_succ @n:Nat -> @-m:Nat -> {Nat.add(n, 1n+m) == 1n+Nat.add(n, m) : Nat} bend-mathlib@0.7.2.0/nat.bend succ_add @-n:Nat -> @-m:Nat -> {Nat.add(1n+n, m) == 1n+Nat.add(n, m) : Nat} bend-mathlib@0.7.2.0/nat.bend add_comm @n:Nat -> @m:Nat -> {Nat.add(n, m) == Nat.add(m, n) : Nat} bend-mathlib@0.7.2.0/nat.bend add_assoc @a:Nat -> @-b:Nat -> @-c:Nat -> {Nat.add(Nat.add(a, b), c) == Nat.add(a, Nat.add(b, c)) : Nat} bend-mathlib@0.7.2.0/nat.bend add_left_comm @a:Nat -> @b:Nat -> @-c:Nat -> {Nat.add(a, Nat.add(b, c)) == Nat.add(b, Nat.add(a, c)) : Nat} bend-mathlib@0.7.2.0/nat.bend add_right_comm @a:Nat -> @b:Nat -> @c:Nat -> {Nat.add(Nat.add(a, b), c) == Nat.add(Nat.add(a, c), b) : Nat} bend-mathlib@0.7.2.0/nat.bend add_add_add_comm @a:Nat -> @b:Nat -> @c:Nat -> @-d:Nat -> {Nat.add(Nat.add(a, b), Nat.add(c, d)) == Nat.add(Nat.add(a, c), Nat.add(b, d)) : Nat} bend-mathlib@0.7.2.0/nat.bend succ_inj @-a:Nat -> @-b:Nat -> @e:{1n+a == 1n+b : Nat} -> {a == b : Nat} bend-mathlib@0.7.2.0/nat.bend zero_ne_succ @-n:Nat -> @_:{0n == 1n+n : Nat} -> Empty bend-mathlib@0.7.2.0/nat.bend succ_ne_zero @-n:Nat -> @_:{1n+n == 0n : Nat} -> Empty bend-mathlib@0.7.2.0/nat.bend add_left_cancel @a:Nat -> @-b:Nat -> @-c:Nat -> @e:{Nat.add(a, b) == Nat.add(a, c) : Nat} -> {b == c : Nat} bend-mathlib@0.7.2.0/nat.bend add_right_cancel @a:Nat -> @b:Nat -> @c:Nat -> @e:{Nat.add(a, b) == Nat.add(c, b) : Nat} -> {a == c : Nat} bend-mathlib@0.7.2.0/nat.bend mul_zero @x:Nat -> {Nat.mul(x, 0n) == 0n : Nat} bend-mathlib@0.7.2.0/nat.bend zero_mul @-x:Nat -> {Nat.mul(0n, x) == 0n : Nat} bend-mathlib@0.7.2.0/nat.bend mul_one @x:Nat -> {Nat.mul(x, 1n) == x : Nat} bend-mathlib@0.7.2.0/nat.bend one_mul @x:Nat -> {Nat.mul(1n, x) == x : Nat} bend-mathlib@0.7.2.0/nat.bend mul_succ @n:Nat -> @m:Nat -> {Nat.mul(n, 1n+m) == Nat.add(Nat.mul(n, m), n) : Nat} bend-mathlib@0.7.2.0/nat.bend succ_mul @n:Nat -> @m:Nat -> {Nat.mul(1n+n, m) == Nat.add(Nat.mul(n, m), m) : Nat} bend-mathlib@0.7.2.0/nat.bend mul_comm @n:Nat -> @m:Nat -> {Nat.mul(n, m) == Nat.mul(m, n) : Nat} bend-mathlib@0.7.2.0/nat.bend add_mul @a:Nat -> @-b:Nat -> @c:Nat -> {Nat.mul(Nat.add(a, b), c) == Nat.add(Nat.mul(a, c), Nat.mul(b, c)) : Nat} bend-mathlib@0.7.2.0/nat.bend mul_add @a:Nat -> @b:Nat -> @c:Nat -> {Nat.mul(a, Nat.add(b, c)) == Nat.add(Nat.mul(a, b), Nat.mul(a, c)) : Nat} bend-mathlib@0.7.2.0/nat.bend mul_assoc @a:Nat -> @b:Nat -> @c:Nat -> {Nat.mul(Nat.mul(a, b), c) == Nat.mul(a, Nat.mul(b, c)) : Nat} bend-mathlib@0.7.2.0/nat.bend le_refl @a:Nat -> le(a, a) bend-mathlib@0.7.2.0/nat.bend zero_le @b:Nat -> le(0n, b) bend-mathlib@0.7.2.0/nat.bend le_succ @n:Nat -> le(n, 1n+n) bend-mathlib@0.7.2.0/nat.bend le_add_right @n:Nat -> @k:Nat -> le(n, Nat.add(n, k)) bend-mathlib@0.7.2.0/nat.bend le_trans @a:Nat -> @b:Nat -> @c:Nat -> @ab:le(a, b) -> @bc:le(b, c) -> le(a, c) bend-mathlib@0.7.2.0/nat.bend le_antisymm @a:Nat -> @b:Nat -> @ab:le(a, b) -> @ba:le(b, a) -> {a == b : Nat} bend-mathlib@0.7.2.0/nat.bend le_total @a:Nat -> @b:Nat -> Or(le(a, b), le(b, a)) bend-mathlib@0.7.2.0/nat.bend le_total_d @a:Nat -> @b:Nat -> Either<&2, &2, le(a, b), le(b, a)> bend-mathlib@0.7.2.0/nat.bend lt_irrefl @a:Nat -> @_:lt(a, a) -> Empty bend-mathlib@0.7.2.0/nat.bend lt_trans @a:Nat -> @b:Nat -> @c:Nat -> @ab:lt(a, b) -> @bc:lt(b, c) -> lt(a, c) bend-mathlib@0.7.2.0/nat.bend le_of_lt @a:Nat -> @b:Nat -> @h:lt(a, b) -> le(a, b) bend-mathlib@0.7.2.0/nat.bend le_of_ge @a:Nat -> @b:Nat -> @h:ge(a, b) -> le(b, a) bend-mathlib@0.7.2.0/nat.bend ge_of_le @a:Nat -> @b:Nat -> @h:le(b, a) -> ge(a, b) bend-mathlib@0.7.2.0/nat.bend lt_of_gt @a:Nat -> @b:Nat -> @h:gt(a, b) -> lt(b, a) bend-mathlib@0.7.2.0/nat.bend gt_of_lt @a:Nat -> @b:Nat -> @h:lt(b, a) -> gt(a, b) bend-mathlib@0.7.2.0/nat.bend sub_zero @n:Nat -> {Nat.sub(n, 0n) == n : Nat} bend-mathlib@0.7.2.0/nat.bend zero_sub @n:Nat -> {Nat.sub(0n, n) == 0n : Nat} bend-mathlib@0.7.2.0/nat.bend sub_self @n:Nat -> {Nat.sub(n, n) == 0n : Nat} bend-mathlib@0.7.2.0/nat.bend succ_sub_succ @-n:Nat -> @-m:Nat -> {Nat.sub(1n+n, 1n+m) == Nat.sub(n, m) : Nat} bend-mathlib@0.7.2.0/nat.bend add_sub_cancel @n:Nat -> @m:Nat -> {Nat.sub(Nat.add(n, m), m) == n : Nat} bend-mathlib@0.7.2.0/nat.bend add_sub_cancel_left @n:Nat -> @m:Nat -> {Nat.sub(Nat.add(n, m), n) == m : Nat} bend-mathlib@0.7.2.0/nat.bend sub_add_cancel @n:Nat -> @m:Nat -> @h:le(m, n) -> {Nat.add(Nat.sub(n, m), m) == n : Nat} bend-mathlib@0.7.2.0/nat.bend sub_sub @n:Nat -> @m:Nat -> @k:Nat -> {Nat.sub(Nat.sub(n, m), k) == Nat.sub(n, Nat.add(m, k)) : Nat} bend-mathlib@0.7.2.0/nat.bend sub_le @n:Nat -> @m:Nat -> le(Nat.sub(n, m), n) bend-mathlib@0.7.2.0/nat.bend div_mod_eq @+a:Nat -> @+b:Nat -> {Nat.add(Nat.mul(Nat.div(a, 1n+b), 1n+b), Nat.mod(a, 1n+b)) == a : Nat} bend-mathlib@0.7.2.0/nat.bend div_eq_zero_of_le @+a:Nat -> @+b:Nat -> @h:le(a, b) -> {Nat.div(a, 1n+b) == 0n : Nat} bend-mathlib@0.7.2.0/nat.bend div_le_div @+a:Nat -> @+c:Nat -> @b:Nat -> @h:le(a, c) -> le(Nat.div(a, 1n+b), Nat.div(c, 1n+b)) bend-mathlib@0.7.2.0/nat.bend add_div_left @+a:Nat -> @+b:Nat -> {Nat.div(Nat.add(1n+b, a), 1n+b) == 1n+Nat.div(a, 1n+b) : Nat} bend-mathlib@0.7.2.0/nat.bend le_div_iff_mul_le @n:Nat -> @+a:Nat -> @+b:Nat -> {Nat.is_le(n, Nat.div(a, 1n+b)) == Nat.is_le(Nat.mul(n, 1n+b), a) : Bool} bend-mathlib@0.7.2.0/nat.bend min_comm @a:Nat -> @b:Nat -> {Nat.min(a, b) == Nat.min(b, a) : Nat} bend-mathlib@0.7.2.0/nat.bend max_comm @a:Nat -> @b:Nat -> {Nat.max(a, b) == Nat.max(b, a) : Nat} bend-mathlib@0.7.2.0/nat.bend min_self @a:Nat -> {Nat.min(a, a) == a : Nat} bend-mathlib@0.7.2.0/nat.bend max_self @a:Nat -> {Nat.max(a, a) == a : Nat} bend-mathlib@0.7.2.0/nat.bend min_zero @a:Nat -> {Nat.min(a, 0n) == 0n : Nat} bend-mathlib@0.7.2.0/nat.bend zero_min @a:Nat -> {Nat.min(0n, a) == 0n : Nat} bend-mathlib@0.7.2.0/nat.bend max_zero @a:Nat -> {Nat.max(a, 0n) == a : Nat} bend-mathlib@0.7.2.0/nat.bend zero_max @a:Nat -> {Nat.max(0n, a) == a : Nat} bend-mathlib@0.7.2.0/nat.bend min_assoc @a:Nat -> @b:Nat -> @c:Nat -> {Nat.min(Nat.min(a, b), c) == Nat.min(a, Nat.min(b, c)) : Nat} bend-mathlib@0.7.2.0/nat.bend max_assoc @a:Nat -> @b:Nat -> @c:Nat -> {Nat.max(Nat.max(a, b), c) == Nat.max(a, Nat.max(b, c)) : Nat} bend-mathlib@0.7.2.0/nat.bend min_add_max @a:Nat -> @b:Nat -> {Nat.add(Nat.min(a, b), Nat.max(a, b)) == Nat.add(a, b) : Nat} bend-mathlib@0.7.2.0/nat.bend min_le_left @a:Nat -> @b:Nat -> le(Nat.min(a, b), a) bend-mathlib@0.7.2.0/nat.bend min_le_right @a:Nat -> @b:Nat -> le(Nat.min(a, b), b) bend-mathlib@0.7.2.0/nat.bend le_max_left @a:Nat -> @b:Nat -> le(a, Nat.max(a, b)) bend-mathlib@0.7.2.0/nat.bend le_max_right @a:Nat -> @b:Nat -> le(b, Nat.max(a, b)) bend-mathlib@0.7.2.0/nat.bend pow_zero @-a:Nat -> {Nat.pow(a, 0n) == 1n : Nat} bend-mathlib@0.7.2.0/nat.bend pow_succ @-a:Nat -> @-n:Nat -> {Nat.pow(a, 1n+n) == Nat.mul(a, Nat.pow(a, n)) : Nat} bend-mathlib@0.7.2.0/nat.bend pow_one @a:Nat -> {Nat.pow(a, 1n) == a : Nat} bend-mathlib@0.7.2.0/nat.bend one_pow @n:Nat -> {Nat.pow(1n, n) == 1n : Nat} bend-mathlib@0.7.2.0/nat.bend pow_add @a:Nat -> @m:Nat -> @n:Nat -> {Nat.pow(a, Nat.add(m, n)) == Nat.mul(Nat.pow(a, m), Nat.pow(a, n)) : Nat} bend-mathlib@0.7.2.0/nat.bend double_eq_add @n:Nat -> {Nat.double(n) == Nat.add(n, n) : Nat} bend-mathlib@0.7.2.0/nat.bend is_eq_refl @n:Nat -> {Nat.is_eq(n, n) == True{} : Bool} bend-mathlib@0.7.2.0/nat.bend is_eq_comm @a:Nat -> @b:Nat -> {Nat.is_eq(a, b) == Nat.is_eq(b, a) : Bool} bend-mathlib@0.7.2.0/nat.bend eq_of_is_eq @a:Nat -> @b:Nat -> @h:{Nat.is_eq(a, b) == True{} : Bool} -> {a == b : Nat} bend-mathlib@0.7.2.0/nat.bend is_ge_eq_is_le @a:Nat -> @b:Nat -> {Nat.is_ge(a, b) == Nat.is_le(b, a) : Bool} bend-mathlib@0.7.2.0/nat.bend is_gt_eq_is_lt @a:Nat -> @b:Nat -> {Nat.is_gt(a, b) == Nat.is_lt(b, a) : Bool} bend-mathlib@0.7.2.0/nat.bend is_lt_eq_succ_le @a:Nat -> @b:Nat -> {Nat.is_lt(a, b) == Nat.is_le(1n+a, b) : Bool} bend-mathlib@0.7.2.0/nat.bend not_is_le @a:Nat -> @b:Nat -> {Bool.not(Nat.is_le(a, b)) == Nat.is_lt(b, a) : Bool} bend-mathlib@0.7.2.0/nat.bend not_is_lt @a:Nat -> @b:Nat -> {Bool.not(Nat.is_lt(a, b)) == Nat.is_le(b, a) : Bool} bend-mathlib@0.7.2.0/nat.bend lt_succ_self @n:Nat -> lt(n, 1n+n) bend-mathlib@0.7.2.0/nat.bend succ_le_succ @-a:Nat -> @-b:Nat -> @h:le(a, b) -> le(1n+a, 1n+b) bend-mathlib@0.7.2.0/nat.bend le_of_succ_le_succ @-a:Nat -> @-b:Nat -> @h:le(1n+a, 1n+b) -> le(a, b) bend-mathlib@0.7.2.0/nat.bend lt_of_lt_of_le @a:Nat -> @b:Nat -> @c:Nat -> @ab:lt(a, b) -> @bc:le(b, c) -> lt(a, c) bend-mathlib@0.7.2.0/nat.bend lt_of_le_of_lt @a:Nat -> @b:Nat -> @c:Nat -> @ab:le(a, b) -> @bc:lt(b, c) -> lt(a, c) bend-mathlib@0.7.2.0/nat.bend add_le_add_left @-a:Nat -> @-b:Nat -> @k:Nat -> @h:le(a, b) -> le(Nat.add(k, a), Nat.add(k, b)) bend-mathlib@0.7.2.0/nat.bend add_le_add_right @+a:Nat -> @+b:Nat -> @+k:Nat -> @h:le(a, b) -> le(Nat.add(a, k), Nat.add(b, k)) bend-mathlib@0.7.2.0/nat.bend add_le_add_iff_left @k:Nat -> @-a:Nat -> @-b:Nat -> {Nat.is_le(a, b) == Nat.is_le(Nat.add(k, a), Nat.add(k, b)) : Bool} bend-mathlib@0.7.2.0/nat.bend add_le_add @+a:Nat -> @+b:Nat -> @+c:Nat -> @+d:Nat -> @h1:le(a, c) -> @h2:le(b, d) -> le(Nat.add(a, b), Nat.add(c, d)) bend-mathlib@0.7.2.0/nat.bend le_and_le_sub_iff_add_le @a:Nat -> @-b:Nat -> @c:Nat -> {Bool.and(Nat.is_le(a, c), Nat.is_le(b, Nat.sub(c, a))) == Nat.is_le(Nat.add(a, b), c) : Bool} bend-mathlib@0.7.2.0/nat.bend le_zero_eq @n:Nat -> @h:le(n, 0n) -> {n == 0n : Nat} bend-mathlib@0.7.2.0/nat.bend lt_zero @n:Nat -> @_:lt(n, 0n) -> Empty bend-mathlib@0.7.2.0/nat.bend not_le_of_lt @a:Nat -> @b:Nat -> @h:lt(a, b) -> {Nat.is_le(b, a) == False{} : Bool} bend-mathlib@0.7.2.0/nat.bend not_lt_of_le @a:Nat -> @b:Nat -> @h:le(a, b) -> {Nat.is_lt(b, a) == False{} : Bool} bend-mathlib@0.7.2.0/nat.bend lt_of_not_le @a:Nat -> @b:Nat -> @h:{Nat.is_le(a, b) == False{} : Bool} -> lt(b, a) bend-mathlib@0.7.2.0/nat.bend le_of_not_lt @a:Nat -> @b:Nat -> @h:{Nat.is_lt(a, b) == False{} : Bool} -> le(b, a) bend-mathlib@0.7.2.0/nat.bend lt_min @a:Nat -> @b:Nat -> @c:Nat -> @hb:lt(a, b) -> @hc:lt(a, c) -> lt(a, Nat.min(b, c)) bend-mathlib@0.7.2.0/nat.bend min_le_iff @a:Nat -> @b:Nat -> @c:Nat -> {Nat.is_le(Nat.min(a, b), c) == Bool.or(Nat.is_le(a, c), Nat.is_le(b, c)) : Bool} bend-mathlib@0.7.2.0/nat.bend lt_max_iff @a:Nat -> @b:Nat -> @c:Nat -> {Nat.is_lt(a, Nat.max(b, c)) == Bool.or(Nat.is_lt(a, b), Nat.is_lt(a, c)) : Bool} bend-mathlib@0.7.2.0/nat.bend sub_eq_zero_of_le @a:Nat -> @b:Nat -> @h:le(a, b) -> {Nat.sub(a, b) == 0n : Nat} bend-mathlib@0.7.2.0/nat.bend succ_sub @a:Nat -> @b:Nat -> @h:le(b, a) -> {Nat.sub(1n+a, b) == 1n+Nat.sub(a, b) : Nat} bend-mathlib@0.7.2.0/nat.bend add_sub_of_le @a:Nat -> @b:Nat -> @h:le(a, b) -> {Nat.add(a, Nat.sub(b, a)) == b : Nat} bend-mathlib@0.7.2.0/nat.bend lt_sub_iff_add_lt @a:Nat -> @b:Nat -> @c:Nat -> {Nat.is_lt(a, Nat.sub(c, b)) == Nat.is_lt(Nat.add(b, a), c) : Bool} bend-mathlib@0.7.2.0/nat.bend le_of_add_eq @a:Nat -> @k:Nat -> @-b:Nat -> @e:{Nat.add(a, k) == b : Nat} -> le(a, b) bend-mathlib@0.7.2.0/nat.bend mul_le_mul_right @+a:Nat -> @+b:Nat -> @+k:Nat -> @h:le(a, b) -> le(Nat.mul(a, k), Nat.mul(b, k)) bend-mathlib@0.7.2.0/nat.bend zero_div @b:Nat -> {Nat.div(0n, b) == 0n : Nat} bend-mathlib@0.7.2.0/nat.bend zero_mod @b:Nat -> {Nat.mod(0n, b) == 0n : Nat} bend-mathlib@0.7.2.0/nat.bend div_one @a:Nat -> {Nat.div(a, 1n) == a : Nat} bend-mathlib@0.7.2.0/nat.bend mod_one @a:Nat -> {Nat.mod(a, 1n) == 0n : Nat} bend-mathlib@0.7.2.0/nat.bend mod_self @n:Nat -> {Nat.mod(n, n) == 0n : Nat} bend-mathlib@0.7.2.0/nat.bend div_self @b:Nat -> {Nat.div(1n+b, 1n+b) == 1n : Nat} bend-mathlib@0.7.2.0/nat.bend mod_lt @a:Nat -> @b:Nat -> lt(Nat.mod(a, 1n+b), 1n+b) bend-mathlib@0.7.2.0/nat.bend mod_le @a:Nat -> @b:Nat -> le(Nat.mod(a, b), a) bend-mathlib@0.7.2.0/nat.bend div_le_self @a:Nat -> @b:Nat -> le(Nat.div(a, b), a) bend-mathlib@0.7.2.0/nat.bend mod_eq_of_lt @a:Nat -> @b:Nat -> @h:lt(a, b) -> {Nat.mod(a, b) == a : Nat} bend-mathlib@0.7.2.0/nat.bend mod_mod @a:Nat -> @n:Nat -> {Nat.mod(Nat.mod(a, n), n) == Nat.mod(a, n) : Nat} bend-mathlib@0.7.2.0/nat.bend add_mod_left @a:Nat -> @b:Nat -> {Nat.mod(Nat.add(b, a), b) == Nat.mod(a, b) : Nat} bend-mathlib@0.7.2.0/nat.bend mul_div_cancel @a:Nat -> @b:Nat -> {Nat.div(Nat.mul(a, 1n+b), 1n+b) == a : Nat} bend-mathlib@0.7.2.0/nat.bend mul_div_cancel_left @a:Nat -> @b:Nat -> {Nat.div(Nat.mul(1n+b, a), 1n+b) == a : Nat} bend-mathlib@0.7.2.0/nat.bend mul_mod_left @a:Nat -> @b:Nat -> {Nat.mod(Nat.mul(a, b), b) == 0n : Nat} bend-mathlib@0.7.2.0/nat.bend mul_mod_right @a:Nat -> @b:Nat -> {Nat.mod(Nat.mul(a, b), a) == 0n : Nat} bend-mathlib@0.7.2.0/nat.bend mod_add_div @a:Nat -> @b:Nat -> {Nat.add(Nat.mod(a, b), Nat.mul(b, Nat.div(a, b))) == a : Nat} bend-mathlib@0.7.2.0/nat.bend div_mul_le_self @a:Nat -> @b:Nat -> le(Nat.mul(Nat.div(a, b), b), a) bend-mathlib@0.7.2.0/nat.bend mul_left_comm @a:Nat -> @b:Nat -> @c:Nat -> {Nat.mul(a, Nat.mul(b, c)) == Nat.mul(b, Nat.mul(a, c)) : Nat} bend-mathlib@0.7.2.0/nat.bend mul_right_comm @a:Nat -> @b:Nat -> @c:Nat -> {Nat.mul(Nat.mul(a, b), c) == Nat.mul(Nat.mul(a, c), b) : Nat} bend-mathlib@0.7.2.0/nat.bend mul_mul_mul_comm @a:Nat -> @b:Nat -> @c:Nat -> @d:Nat -> {Nat.mul(Nat.mul(a, b), Nat.mul(c, d)) == Nat.mul(Nat.mul(a, c), Nat.mul(b, d)) : Nat} bend-mathlib@0.7.2.0/nat.bend zero_pow @-n:Nat -> {Nat.pow(0n, 1n+n) == 0n : Nat} bend-mathlib@0.7.2.0/nat.bend mul_pow @+a:Nat -> @+b:Nat -> @n:Nat -> {Nat.pow(Nat.mul(a, b), n) == Nat.mul(Nat.pow(a, n), Nat.pow(b, n)) : Nat} bend-mathlib@0.7.2.0/nat.bend pow_mul @a:Nat -> @m:Nat -> @n:Nat -> {Nat.pow(a, Nat.mul(m, n)) == Nat.pow(Nat.pow(a, m), n) : Nat} bend-mathlib@0.7.2.0/nat.bend one_le_pow @n:Nat -> @a:Nat -> le(1n, Nat.pow(1n+a, n)) bend-mathlib@0.7.2.0/nat.bend pow_pos @n:Nat -> @a:Nat -> lt(0n, Nat.pow(1n+a, n)) bend-mathlib@0.7.2.0/nat.bend le_add_left @n:Nat -> @m:Nat -> le(n, Nat.add(m, n)) bend-mathlib@0.7.2.0/nat.bend add_sub_add_left @k:Nat -> @-n:Nat -> @-m:Nat -> {Nat.sub(Nat.add(k, n), Nat.add(k, m)) == Nat.sub(n, m) : Nat} bend-mathlib@0.7.2.0/nat.bend add_sub_add_right @n:Nat -> @k:Nat -> @m:Nat -> {Nat.sub(Nat.add(n, k), Nat.add(m, k)) == Nat.sub(n, m) : Nat} bend-mathlib@0.7.2.0/nat.bend add_sub_assoc @k:Nat -> @m:Nat -> @h:le(k, m) -> @n:Nat -> {Nat.sub(Nat.add(n, m), k) == Nat.add(n, Nat.sub(m, k)) : Nat} bend-mathlib@0.7.2.0/nat.bend sub_sub_self @n:Nat -> @m:Nat -> @h:le(m, n) -> {Nat.sub(n, Nat.sub(n, m)) == m : Nat} bend-mathlib@0.7.2.0/nat.bend sub_mul @n:Nat -> @m:Nat -> @k:Nat -> {Nat.mul(Nat.sub(n, m), k) == Nat.sub(Nat.mul(n, k), Nat.mul(m, k)) : Nat} bend-mathlib@0.7.2.0/nat.bend mul_sub @n:Nat -> @m:Nat -> @k:Nat -> {Nat.mul(n, Nat.sub(m, k)) == Nat.sub(Nat.mul(n, m), Nat.mul(n, k)) : Nat} bend-mathlib@0.7.2.0/nat.bend min_eq_left @a:Nat -> @b:Nat -> @h:le(a, b) -> {Nat.min(a, b) == a : Nat} bend-mathlib@0.7.2.0/nat.bend min_eq_right @a:Nat -> @b:Nat -> @h:le(b, a) -> {Nat.min(a, b) == b : Nat} bend-mathlib@0.7.2.0/nat.bend max_eq_left @a:Nat -> @b:Nat -> @h:le(b, a) -> {Nat.max(a, b) == a : Nat} bend-mathlib@0.7.2.0/nat.bend max_eq_right @a:Nat -> @b:Nat -> @h:le(a, b) -> {Nat.max(a, b) == b : Nat} bend-mathlib@0.7.2.0/nat.bend le_min @a:Nat -> @b:Nat -> @c:Nat -> {Nat.is_le(a, Nat.min(b, c)) == Bool.and(Nat.is_le(a, b), Nat.is_le(a, c)) : Bool} bend-mathlib@0.7.2.0/nat.bend max_le @a:Nat -> @b:Nat -> @c:Nat -> {Nat.is_le(Nat.max(a, b), c) == Bool.and(Nat.is_le(a, c), Nat.is_le(b, c)) : Bool} bend-mathlib@0.7.2.0/nat.bend mul_le_mul_left @a:Nat -> @b:Nat -> @k:Nat -> @h:le(a, b) -> le(Nat.mul(k, a), Nat.mul(k, b)) bend-mathlib@0.7.2.0/nat.bend mul_le_mul @a:Nat -> @b:Nat -> @c:Nat -> @d:Nat -> @h1:le(a, c) -> @h2:le(b, d) -> le(Nat.mul(a, b), Nat.mul(c, d)) bend-mathlib@0.7.2.0/nat.bend succ_pos @-n:Nat -> lt(0n, 1n+n) bend-mathlib@0.7.2.0/nat.bend lt_succ_iff @m:Nat -> @n:Nat -> {Nat.is_lt(m, 1n+n) == Nat.is_le(m, n) : Bool} bend-mathlib@0.7.2.0/nat.bend succ_lt_succ @-a:Nat -> @-b:Nat -> @h:lt(a, b) -> lt(1n+a, 1n+b) bend-mathlib@0.7.2.0/nat.bend lt_of_succ_lt_succ @-a:Nat -> @-b:Nat -> @h:lt(1n+a, 1n+b) -> lt(a, b) bend-mathlib@0.7.2.0/nat.bend le_of_lt_succ @m:Nat -> @n:Nat -> @h:lt(m, 1n+n) -> le(m, n) bend-mathlib@0.7.2.0/nat.bend lt_succ_of_le @m:Nat -> @n:Nat -> @h:le(m, n) -> lt(m, 1n+n) bend-mathlib@0.7.2.0/nat.bend succ_le_of_lt @n:Nat -> @m:Nat -> @h:lt(n, m) -> le(1n+n, m) bend-mathlib@0.7.2.0/nat.bend lt_of_succ_le @n:Nat -> @m:Nat -> @h:le(1n+n, m) -> lt(n, m) bend-mathlib@0.7.2.0/nat.bend lt_asymm @a:Nat -> @b:Nat -> @h:lt(a, b) -> @_:lt(b, a) -> Empty bend-mathlib@0.7.2.0/nat.bend le_iff_lt_or_eq @a:Nat -> @b:Nat -> {Nat.is_le(a, b) == Bool.or(Nat.is_lt(a, b), Nat.is_eq(a, b)) : Bool} bend-mathlib@0.7.2.0/nat.bend lt_iff_le_and_ne @a:Nat -> @b:Nat -> {Nat.is_lt(a, b) == Bool.and(Nat.is_le(a, b), Bool.not(Nat.is_eq(a, b))) : Bool} bend-mathlib@0.7.2.0/nat.bend pos_of_ne_zero @n:Nat -> @h:{Nat.is_eq(n, 0n) == False{} : Bool} -> lt(0n, n) bend-mathlib@0.7.2.0/nat.bend lt_add_right @n:Nat -> @m:Nat -> @-k:Nat -> @h:lt(n, m) -> lt(n, Nat.add(m, k)) bend-mathlib@0.7.2.0/nat.bend lt_add_of_pos_right @n:Nat -> @-k:Nat -> lt(n, Nat.add(n, 1n+k)) bend-mathlib@0.7.2.0/nat.bend lt_add_of_pos_left @n:Nat -> @k:Nat -> lt(n, Nat.add(1n+k, n)) bend-mathlib@0.7.2.0/nat.bend add_lt_add_left @-a:Nat -> @-b:Nat -> @k:Nat -> @h:lt(a, b) -> lt(Nat.add(k, a), Nat.add(k, b)) bend-mathlib@0.7.2.0/nat.bend add_lt_add_right @a:Nat -> @b:Nat -> @k:Nat -> @h:lt(a, b) -> lt(Nat.add(a, k), Nat.add(b, k)) bend-mathlib@0.7.2.0/nat.bend add_lt_add_iff_left @k:Nat -> @-a:Nat -> @-b:Nat -> {Nat.is_lt(a, b) == Nat.is_lt(Nat.add(k, a), Nat.add(k, b)) : Bool} bend-mathlib@0.7.2.0/nat.bend add_lt_add_iff_right @a:Nat -> @b:Nat -> @k:Nat -> {Nat.is_lt(a, b) == Nat.is_lt(Nat.add(a, k), Nat.add(b, k)) : Bool} bend-mathlib@0.7.2.0/nat.bend lt_of_add_lt_add_left @k:Nat -> @-a:Nat -> @-b:Nat -> @h:lt(Nat.add(k, a), Nat.add(k, b)) -> lt(a, b) bend-mathlib@0.7.2.0/nat.bend lt_of_add_lt_add_right @a:Nat -> @b:Nat -> @k:Nat -> @h:lt(Nat.add(a, k), Nat.add(b, k)) -> lt(a, b) bend-mathlib@0.7.2.0/nat.bend add_lt_add @a:Nat -> @b:Nat -> @c:Nat -> @d:Nat -> @h1:lt(a, c) -> @h2:lt(b, d) -> lt(Nat.add(a, b), Nat.add(c, d)) bend-mathlib@0.7.2.0/nat.bend le_mul_of_pos_left @m:Nat -> @n:Nat -> le(m, Nat.mul(1n+n, m)) bend-mathlib@0.7.2.0/nat.bend le_mul_of_pos_right @m:Nat -> @n:Nat -> le(m, Nat.mul(m, 1n+n)) bend-mathlib@0.7.2.0/nat.bend mul_lt_mul_of_pos_left @a:Nat -> @b:Nat -> @k:Nat -> @h:lt(a, b) -> lt(Nat.mul(1n+k, a), Nat.mul(1n+k, b)) bend-mathlib@0.7.2.0/nat.bend mul_lt_mul_of_pos_right @a:Nat -> @b:Nat -> @k:Nat -> @h:lt(a, b) -> lt(Nat.mul(a, 1n+k), Nat.mul(b, 1n+k)) bend-mathlib@0.7.2.0/nat.bend lt_of_mul_lt_mul_left @k:Nat -> @a:Nat -> @b:Nat -> @h:lt(Nat.mul(k, a), Nat.mul(k, b)) -> lt(a, b) bend-mathlib@0.7.2.0/nat.bend lt_of_mul_lt_mul_right @a:Nat -> @b:Nat -> @k:Nat -> @h:lt(Nat.mul(a, k), Nat.mul(b, k)) -> lt(a, b) bend-mathlib@0.7.2.0/nat.bend mul_lt_mul_of_lt_of_lt @a:Nat -> @b:Nat -> @c:Nat -> @d:Nat -> @h1:lt(a, c) -> @h2:lt(b, d) -> lt(Nat.mul(a, b), Nat.mul(c, d)) bend-mathlib@0.7.2.0/nat.bend mul_self_le_mul_self @a:Nat -> @b:Nat -> @h:le(a, b) -> le(Nat.mul(a, a), Nat.mul(b, b)) bend-mathlib@0.7.2.0/nat.bend mul_self_lt_mul_self @a:Nat -> @b:Nat -> @h:lt(a, b) -> lt(Nat.mul(a, a), Nat.mul(b, b)) bend-mathlib@0.7.2.0/nat.bend sub_lt @n:Nat -> @m:Nat -> lt(Nat.sub(1n+n, 1n+m), 1n+n) bend-mathlib@0.7.2.0/nat.bend sub_le_sub_left @n:Nat -> @m:Nat -> @h:le(n, m) -> @k:Nat -> le(Nat.sub(k, m), Nat.sub(k, n)) bend-mathlib@0.7.2.0/nat.bend sub_le_sub_right @n:Nat -> @m:Nat -> @h:le(n, m) -> @k:Nat -> le(Nat.sub(n, k), Nat.sub(m, k)) bend-mathlib@0.7.2.0/nat.bend lt_sub_of_add_lt @a:Nat -> @b:Nat -> @c:Nat -> @h:lt(Nat.add(a, b), c) -> lt(a, Nat.sub(c, b)) bend-mathlib@0.7.2.0/nat.bend sub_pos_of_lt @m:Nat -> @n:Nat -> @h:lt(m, n) -> lt(0n, Nat.sub(n, m)) bend-mathlib@0.7.2.0/nat.bend min_max_distrib_left @a:Nat -> @b:Nat -> @c:Nat -> {Nat.min(a, Nat.max(b, c)) == Nat.max(Nat.min(a, b), Nat.min(a, c)) : Nat} bend-mathlib@0.7.2.0/nat.bend max_min_distrib_left @a:Nat -> @b:Nat -> @c:Nat -> {Nat.max(a, Nat.min(b, c)) == Nat.min(Nat.max(a, b), Nat.max(a, c)) : Nat} bend-mathlib@0.7.2.0/nat.bend min_add_add_left @a:Nat -> @-b:Nat -> @-c:Nat -> {Nat.min(Nat.add(a, b), Nat.add(a, c)) == Nat.add(a, Nat.min(b, c)) : Nat} bend-mathlib@0.7.2.0/nat.bend min_add_add_right @a:Nat -> @b:Nat -> @c:Nat -> {Nat.min(Nat.add(a, c), Nat.add(b, c)) == Nat.add(Nat.min(a, b), c) : Nat} bend-mathlib@0.7.2.0/nat.bend max_add_add_left @a:Nat -> @-b:Nat -> @-c:Nat -> {Nat.max(Nat.add(a, b), Nat.add(a, c)) == Nat.add(a, Nat.max(b, c)) : Nat} bend-mathlib@0.7.2.0/nat.bend max_add_add_right @a:Nat -> @b:Nat -> @c:Nat -> {Nat.max(Nat.add(a, c), Nat.add(b, c)) == Nat.add(Nat.max(a, b), c) : Nat} bend-mathlib@0.7.2.0/nat.bend min_lt_iff @a:Nat -> @b:Nat -> @c:Nat -> {Nat.is_lt(Nat.min(a, b), c) == Bool.or(Nat.is_lt(a, c), Nat.is_lt(b, c)) : Bool} bend-mathlib@0.7.2.0/nat.bend lt_min_iff @a:Nat -> @b:Nat -> @c:Nat -> {Nat.is_lt(a, Nat.min(b, c)) == Bool.and(Nat.is_lt(a, b), Nat.is_lt(a, c)) : Bool} bend-mathlib@0.7.2.0/nat.bend max_lt_iff @a:Nat -> @b:Nat -> @c:Nat -> {Nat.is_lt(Nat.max(a, b), c) == Bool.and(Nat.is_lt(a, c), Nat.is_lt(b, c)) : Bool} bend-mathlib@0.7.2.0/nat.bend le_max_iff @a:Nat -> @b:Nat -> @c:Nat -> {Nat.is_le(a, Nat.max(b, c)) == Bool.or(Nat.is_le(a, b), Nat.is_le(a, c)) : Bool} bend-mathlib@0.7.2.0/nat.bend le_max_of_le_left @a:Nat -> @b:Nat -> @c:Nat -> @h:le(a, b) -> le(a, Nat.max(b, c)) bend-mathlib@0.7.2.0/nat.bend le_max_of_le_right @a:Nat -> @b:Nat -> @c:Nat -> @h:le(a, c) -> le(a, Nat.max(b, c)) bend-mathlib@0.7.2.0/nat.bend min_le_of_left_le @a:Nat -> @b:Nat -> @c:Nat -> @h:le(a, c) -> le(Nat.min(a, b), c) bend-mathlib@0.7.2.0/nat.bend min_le_of_right_le @a:Nat -> @b:Nat -> @c:Nat -> @h:le(b, c) -> le(Nat.min(a, b), c) bend-mathlib@0.7.2.0/nat.bend min_le_min @a:Nat -> @b:Nat -> @c:Nat -> @d:Nat -> @h1:le(a, c) -> @h2:le(b, d) -> le(Nat.min(a, b), Nat.min(c, d)) bend-mathlib@0.7.2.0/nat.bend max_le_max @a:Nat -> @b:Nat -> @c:Nat -> @d:Nat -> @h1:le(a, c) -> @h2:le(b, d) -> le(Nat.max(a, b), Nat.max(c, d)) bend-mathlib@0.7.2.0/nat.bend pow_le_pow_left @a:Nat -> @b:Nat -> @h:le(a, b) -> @n:Nat -> le(Nat.pow(a, n), Nat.pow(b, n)) bend-mathlib@0.7.2.0/nat.bend pow_le_pow_right @a:Nat -> @i:Nat -> @j:Nat -> @h:le(i, j) -> le(Nat.pow(1n+a, i), Nat.pow(1n+a, j)) bend-mathlib@0.7.2.0/nat.bend pow_lt_pow_right @a:Nat -> @i:Nat -> @j:Nat -> @h:lt(i, j) -> lt(Nat.pow(2n+a, i), Nat.pow(2n+a, j)) bend-mathlib@0.7.2.0/nat.bend pow_lt_pow_left @a:Nat -> @b:Nat -> @h:lt(a, b) -> @n:Nat -> lt(Nat.pow(a, 1n+n), Nat.pow(b, 1n+n)) bend-mathlib@0.7.2.0/nat.bend add_mul_div_right @x:Nat -> @z:Nat -> @b:Nat -> {Nat.div(Nat.add(x, Nat.mul(z, 1n+b)), 1n+b) == Nat.add(Nat.div(x, 1n+b), z) : Nat} bend-mathlib@0.7.2.0/nat.bend add_mul_div_left @x:Nat -> @z:Nat -> @b:Nat -> {Nat.div(Nat.add(x, Nat.mul(1n+b, z)), 1n+b) == Nat.add(Nat.div(x, 1n+b), z) : Nat} bend-mathlib@0.7.2.0/nat.bend add_mul_mod_self_right @a:Nat -> @b:Nat -> @c:Nat -> {Nat.mod(Nat.add(a, Nat.mul(c, b)), b) == Nat.mod(a, b) : Nat} bend-mathlib@0.7.2.0/nat.bend add_mul_mod_self_left @a:Nat -> @b:Nat -> @c:Nat -> {Nat.mod(Nat.add(a, Nat.mul(b, c)), b) == Nat.mod(a, b) : Nat} bend-mathlib@0.7.2.0/nat.bend mod_two_eq_zero_or_one @n:Nat -> {Bool.or(Nat.is_eq(Nat.mod(n, 2n), 0n), Nat.is_eq(Nat.mod(n, 2n), 1n)) == True{} : Bool} bend-mathlib@0.7.2.0/nat.bend div_add_mod @a:Nat -> @b:Nat -> {Nat.add(Nat.mul(b, Nat.div(a, b)), Nat.mod(a, b)) == a : Nat} bend-mathlib@0.7.2.0/nat.bend two_mul @n:Nat -> {Nat.mul(2n, n) == Nat.add(n, n) : Nat} bend-mathlib@0.7.2.0/nat.bend double_eq_two_mul @n:Nat -> {Nat.double(n) == Nat.mul(2n, n) : Nat} bend-mathlib@0.7.2.0/nat.bend double_add @a:Nat -> @b:Nat -> {Nat.double(Nat.add(a, b)) == Nat.add(Nat.double(a), Nat.double(b)) : Nat} bend-mathlib@0.7.2.0/nat.bend double_mul @a:Nat -> @b:Nat -> {Nat.double(Nat.mul(a, b)) == Nat.mul(Nat.double(a), b) : Nat} bend-mathlib@0.7.2.0/nat.bend mul_double @a:Nat -> @b:Nat -> {Nat.mul(a, Nat.double(b)) == Nat.double(Nat.mul(a, b)) : Nat} bend-mathlib@0.7.2.0/nat.bend double_sub @a:Nat -> @b:Nat -> {Nat.double(Nat.sub(a, b)) == Nat.sub(Nat.double(a), Nat.double(b)) : Nat} bend-mathlib@0.7.2.0/nat.bend le_double @n:Nat -> le(n, Nat.double(n)) bend-mathlib@0.7.2.0/nat.bend double_le_double @a:Nat -> @b:Nat -> @h:le(a, b) -> le(Nat.double(a), Nat.double(b)) bend-mathlib@0.7.2.0/nat.bend double_lt_double @a:Nat -> @b:Nat -> @h:lt(a, b) -> lt(Nat.double(a), Nat.double(b)) bend-mathlib@0.7.2.0/nat.bend double_div_two_add_mod_two @n:Nat -> {Nat.add(Nat.double(Nat.div(n, 2n)), Nat.mod(n, 2n)) == n : Nat} bend-mathlib@0.7.2.0/nat.bend add_le_add_iff_right @a:Nat -> @b:Nat -> @k:Nat -> {Nat.is_le(a, b) == Nat.is_le(Nat.add(a, k), Nat.add(b, k)) : Bool} bend-mathlib@0.7.2.0/nat.bend add_left_cancel_iff @k:Nat -> @-a:Nat -> @-b:Nat -> {Nat.is_eq(a, b) == Nat.is_eq(Nat.add(k, a), Nat.add(k, b)) : Bool} bend-mathlib@0.7.2.0/nat.bend add_right_cancel_iff @a:Nat -> @b:Nat -> @k:Nat -> {Nat.is_eq(a, b) == Nat.is_eq(Nat.add(a, k), Nat.add(b, k)) : Bool} bend-mathlib@0.7.2.0/nat.bend sub_add_comm @n:Nat -> @m:Nat -> @k:Nat -> @h:le(k, n) -> {Nat.sub(Nat.add(n, m), k) == Nat.add(Nat.sub(n, k), m) : Nat} bend-mathlib@0.7.2.0/nat.bend le_min_of_le_of_le @a:Nat -> @b:Nat -> @c:Nat -> @hb:le(a, b) -> @hc:le(a, c) -> le(a, Nat.min(b, c)) bend-mathlib@0.7.2.0/nat.bend max_le_of_le_of_le @a:Nat -> @b:Nat -> @c:Nat -> @ha:le(a, c) -> @hb:le(b, c) -> le(Nat.max(a, b), c) bend-mathlib@0.7.2.0/nat.bend mul_two @n:Nat -> {Nat.mul(n, 2n) == Nat.add(n, n) : Nat} bend-mathlib@0.7.2.0/nat.bend pow_two @n:Nat -> {Nat.pow(n, 2n) == Nat.mul(n, n) : Nat} bend-mathlib@0.7.2.0/nat.bend min_le_max @a:Nat -> @b:Nat -> {Nat.is_le(Nat.min(a, b), Nat.max(a, b)) == True{} : Bool} bend-mathlib@0.7.2.0/nat.bend add_zero_sym @x:Nat -> {x == Nat.add(x, 0n) : Nat} bend-mathlib@0.7.2.0/nat.bend zero_add_sym @-x:Nat -> {x == Nat.add(0n, x) : Nat} bend-mathlib@0.7.2.0/nat.bend add_succ_sym @n:Nat -> @-m:Nat -> {1n+Nat.add(n, m) == Nat.add(n, 1n+m) : Nat} bend-mathlib@0.7.2.0/nat.bend succ_add_sym @-n:Nat -> @-m:Nat -> {1n+Nat.add(n, m) == Nat.add(1n+n, m) : Nat} bend-mathlib@0.7.2.0/nat.bend add_comm_sym @n:Nat -> @m:Nat -> {Nat.add(m, n) == Nat.add(n, m) : Nat} bend-mathlib@0.7.2.0/nat.bend add_assoc_sym @a:Nat -> @-b:Nat -> @-c:Nat -> {Nat.add(a, Nat.add(b, c)) == Nat.add(Nat.add(a, b), c) : Nat} bend-mathlib@0.7.2.0/nat.bend add_left_comm_sym @a:Nat -> @b:Nat -> @-c:Nat -> {Nat.add(b, Nat.add(a, c)) == Nat.add(a, Nat.add(b, c)) : Nat} bend-mathlib@0.7.2.0/nat.bend add_right_comm_sym @a:Nat -> @b:Nat -> @c:Nat -> {Nat.add(Nat.add(a, c), b) == Nat.add(Nat.add(a, b), c) : Nat} bend-mathlib@0.7.2.0/nat.bend add_add_add_comm_sym @a:Nat -> @b:Nat -> @c:Nat -> @-d:Nat -> {Nat.add(Nat.add(a, c), Nat.add(b, d)) == Nat.add(Nat.add(a, b), Nat.add(c, d)) : Nat} bend-mathlib@0.7.2.0/nat.bend mul_zero_sym @x:Nat -> {0n == Nat.mul(x, 0n) : Nat} bend-mathlib@0.7.2.0/nat.bend zero_mul_sym @-x:Nat -> {0n == Nat.mul(0n, x) : Nat} bend-mathlib@0.7.2.0/nat.bend mul_one_sym @x:Nat -> {x == Nat.mul(x, 1n) : Nat} bend-mathlib@0.7.2.0/nat.bend one_mul_sym @x:Nat -> {x == Nat.mul(1n, x) : Nat} bend-mathlib@0.7.2.0/nat.bend mul_succ_sym @n:Nat -> @m:Nat -> {Nat.add(Nat.mul(n, m), n) == Nat.mul(n, 1n+m) : Nat} bend-mathlib@0.7.2.0/nat.bend succ_mul_sym @n:Nat -> @m:Nat -> {Nat.add(Nat.mul(n, m), m) == Nat.mul(1n+n, m) : Nat} bend-mathlib@0.7.2.0/nat.bend mul_comm_sym @n:Nat -> @m:Nat -> {Nat.mul(m, n) == Nat.mul(n, m) : Nat} bend-mathlib@0.7.2.0/nat.bend add_mul_sym @a:Nat -> @-b:Nat -> @c:Nat -> {Nat.add(Nat.mul(a, c), Nat.mul(b, c)) == Nat.mul(Nat.add(a, b), c) : Nat} bend-mathlib@0.7.2.0/nat.bend mul_add_sym @a:Nat -> @b:Nat -> @c:Nat -> {Nat.add(Nat.mul(a, b), Nat.mul(a, c)) == Nat.mul(a, Nat.add(b, c)) : Nat} bend-mathlib@0.7.2.0/nat.bend mul_assoc_sym @a:Nat -> @b:Nat -> @c:Nat -> {Nat.mul(a, Nat.mul(b, c)) == Nat.mul(Nat.mul(a, b), c) : Nat} bend-mathlib@0.7.2.0/nat.bend sub_zero_sym @n:Nat -> {n == Nat.sub(n, 0n) : Nat} bend-mathlib@0.7.2.0/nat.bend zero_sub_sym @n:Nat -> {0n == Nat.sub(0n, n) : Nat} bend-mathlib@0.7.2.0/nat.bend sub_self_sym @n:Nat -> {0n == Nat.sub(n, n) : Nat} bend-mathlib@0.7.2.0/nat.bend succ_sub_succ_sym @-n:Nat -> @-m:Nat -> {Nat.sub(n, m) == Nat.sub(1n+n, 1n+m) : Nat} bend-mathlib@0.7.2.0/nat.bend add_sub_cancel_sym @n:Nat -> @m:Nat -> {n == Nat.sub(Nat.add(n, m), m) : Nat} bend-mathlib@0.7.2.0/nat.bend add_sub_cancel_left_sym @n:Nat -> @m:Nat -> {m == Nat.sub(Nat.add(n, m), n) : Nat} bend-mathlib@0.7.2.0/nat.bend sub_sub_sym @n:Nat -> @m:Nat -> @k:Nat -> {Nat.sub(n, Nat.add(m, k)) == Nat.sub(Nat.sub(n, m), k) : Nat} bend-mathlib@0.7.2.0/nat.bend div_mod_eq_sym @+a:Nat -> @+b:Nat -> {a == Nat.add(Nat.mul(Nat.div(a, 1n+b), 1n+b), Nat.mod(a, 1n+b)) : Nat} bend-mathlib@0.7.2.0/nat.bend add_div_left_sym @+a:Nat -> @+b:Nat -> {1n+Nat.div(a, 1n+b) == Nat.div(Nat.add(1n+b, a), 1n+b) : Nat} bend-mathlib@0.7.2.0/nat.bend le_div_iff_mul_le_sym @n:Nat -> @+a:Nat -> @+b:Nat -> {Nat.is_le(Nat.mul(n, 1n+b), a) == Nat.is_le(n, Nat.div(a, 1n+b)) : Bool} bend-mathlib@0.7.2.0/nat.bend min_comm_sym @a:Nat -> @b:Nat -> {Nat.min(b, a) == Nat.min(a, b) : Nat} bend-mathlib@0.7.2.0/nat.bend max_comm_sym @a:Nat -> @b:Nat -> {Nat.max(b, a) == Nat.max(a, b) : Nat} bend-mathlib@0.7.2.0/nat.bend min_self_sym @a:Nat -> {a == Nat.min(a, a) : Nat} bend-mathlib@0.7.2.0/nat.bend max_self_sym @a:Nat -> {a == Nat.max(a, a) : Nat} bend-mathlib@0.7.2.0/nat.bend min_zero_sym @a:Nat -> {0n == Nat.min(a, 0n) : Nat} bend-mathlib@0.7.2.0/nat.bend zero_min_sym @a:Nat -> {0n == Nat.min(0n, a) : Nat} bend-mathlib@0.7.2.0/nat.bend max_zero_sym @a:Nat -> {a == Nat.max(a, 0n) : Nat} bend-mathlib@0.7.2.0/nat.bend zero_max_sym @a:Nat -> {a == Nat.max(0n, a) : Nat} bend-mathlib@0.7.2.0/nat.bend min_assoc_sym @a:Nat -> @b:Nat -> @c:Nat -> {Nat.min(a, Nat.min(b, c)) == Nat.min(Nat.min(a, b), c) : Nat} bend-mathlib@0.7.2.0/nat.bend max_assoc_sym @a:Nat -> @b:Nat -> @c:Nat -> {Nat.max(a, Nat.max(b, c)) == Nat.max(Nat.max(a, b), c) : Nat} bend-mathlib@0.7.2.0/nat.bend min_add_max_sym @a:Nat -> @b:Nat -> {Nat.add(a, b) == Nat.add(Nat.min(a, b), Nat.max(a, b)) : Nat} bend-mathlib@0.7.2.0/nat.bend pow_zero_sym @-a:Nat -> {1n == Nat.pow(a, 0n) : Nat} bend-mathlib@0.7.2.0/nat.bend pow_succ_sym @-a:Nat -> @-n:Nat -> {Nat.mul(a, Nat.pow(a, n)) == Nat.pow(a, 1n+n) : Nat} bend-mathlib@0.7.2.0/nat.bend pow_one_sym @a:Nat -> {a == Nat.pow(a, 1n) : Nat} bend-mathlib@0.7.2.0/nat.bend one_pow_sym @n:Nat -> {1n == Nat.pow(1n, n) : Nat} bend-mathlib@0.7.2.0/nat.bend pow_add_sym @a:Nat -> @m:Nat -> @n:Nat -> {Nat.mul(Nat.pow(a, m), Nat.pow(a, n)) == Nat.pow(a, Nat.add(m, n)) : Nat} bend-mathlib@0.7.2.0/nat.bend double_eq_add_sym @n:Nat -> {Nat.add(n, n) == Nat.double(n) : Nat} bend-mathlib@0.7.2.0/nat.bend is_eq_refl_sym @n:Nat -> {True{} == Nat.is_eq(n, n) : Bool} bend-mathlib@0.7.2.0/nat.bend is_eq_comm_sym @a:Nat -> @b:Nat -> {Nat.is_eq(b, a) == Nat.is_eq(a, b) : Bool} bend-mathlib@0.7.2.0/nat.bend is_ge_eq_is_le_sym @a:Nat -> @b:Nat -> {Nat.is_le(b, a) == Nat.is_ge(a, b) : Bool} bend-mathlib@0.7.2.0/nat.bend is_gt_eq_is_lt_sym @a:Nat -> @b:Nat -> {Nat.is_lt(b, a) == Nat.is_gt(a, b) : Bool} bend-mathlib@0.7.2.0/nat.bend is_lt_eq_succ_le_sym @a:Nat -> @b:Nat -> {Nat.is_le(1n+a, b) == Nat.is_lt(a, b) : Bool} bend-mathlib@0.7.2.0/nat.bend not_is_le_sym @a:Nat -> @b:Nat -> {Nat.is_lt(b, a) == Bool.not(Nat.is_le(a, b)) : Bool} bend-mathlib@0.7.2.0/nat.bend not_is_lt_sym @a:Nat -> @b:Nat -> {Nat.is_le(b, a) == Bool.not(Nat.is_lt(a, b)) : Bool} bend-mathlib@0.7.2.0/nat.bend add_le_add_iff_left_sym @k:Nat -> @-a:Nat -> @-b:Nat -> {Nat.is_le(Nat.add(k, a), Nat.add(k, b)) == Nat.is_le(a, b) : Bool} bend-mathlib@0.7.2.0/nat.bend le_and_le_sub_iff_add_le_sym @a:Nat -> @-b:Nat -> @c:Nat -> {Nat.is_le(Nat.add(a, b), c) == Bool.and(Nat.is_le(a, c), Nat.is_le(b, Nat.sub(c, a))) : Bool} bend-mathlib@0.7.2.0/nat.bend min_le_iff_sym @a:Nat -> @b:Nat -> @c:Nat -> {Bool.or(Nat.is_le(a, c), Nat.is_le(b, c)) == Nat.is_le(Nat.min(a, b), c) : Bool} bend-mathlib@0.7.2.0/nat.bend lt_max_iff_sym @a:Nat -> @b:Nat -> @c:Nat -> {Bool.or(Nat.is_lt(a, b), Nat.is_lt(a, c)) == Nat.is_lt(a, Nat.max(b, c)) : Bool} bend-mathlib@0.7.2.0/nat.bend lt_sub_iff_add_lt_sym @a:Nat -> @b:Nat -> @c:Nat -> {Nat.is_lt(Nat.add(b, a), c) == Nat.is_lt(a, Nat.sub(c, b)) : Bool} bend-mathlib@0.7.2.0/nat.bend zero_div_sym @b:Nat -> {0n == Nat.div(0n, b) : Nat} bend-mathlib@0.7.2.0/nat.bend zero_mod_sym @b:Nat -> {0n == Nat.mod(0n, b) : Nat} bend-mathlib@0.7.2.0/nat.bend div_one_sym @a:Nat -> {a == Nat.div(a, 1n) : Nat} bend-mathlib@0.7.2.0/nat.bend mod_one_sym @a:Nat -> {0n == Nat.mod(a, 1n) : Nat} bend-mathlib@0.7.2.0/nat.bend mod_self_sym @n:Nat -> {0n == Nat.mod(n, n) : Nat} bend-mathlib@0.7.2.0/nat.bend div_self_sym @b:Nat -> {1n == Nat.div(1n+b, 1n+b) : Nat} bend-mathlib@0.7.2.0/nat.bend mod_mod_sym @a:Nat -> @n:Nat -> {Nat.mod(a, n) == Nat.mod(Nat.mod(a, n), n) : Nat} bend-mathlib@0.7.2.0/nat.bend add_mod_left_sym @a:Nat -> @b:Nat -> {Nat.mod(a, b) == Nat.mod(Nat.add(b, a), b) : Nat} bend-mathlib@0.7.2.0/nat.bend mul_div_cancel_sym @a:Nat -> @b:Nat -> {a == Nat.div(Nat.mul(a, 1n+b), 1n+b) : Nat} bend-mathlib@0.7.2.0/nat.bend mul_div_cancel_left_sym @a:Nat -> @b:Nat -> {a == Nat.div(Nat.mul(1n+b, a), 1n+b) : Nat} bend-mathlib@0.7.2.0/nat.bend mul_mod_left_sym @a:Nat -> @b:Nat -> {0n == Nat.mod(Nat.mul(a, b), b) : Nat} bend-mathlib@0.7.2.0/nat.bend mul_mod_right_sym @a:Nat -> @b:Nat -> {0n == Nat.mod(Nat.mul(a, b), a) : Nat} bend-mathlib@0.7.2.0/nat.bend mod_add_div_sym @a:Nat -> @b:Nat -> {a == Nat.add(Nat.mod(a, b), Nat.mul(b, Nat.div(a, b))) : Nat} bend-mathlib@0.7.2.0/nat.bend mul_left_comm_sym @a:Nat -> @b:Nat -> @c:Nat -> {Nat.mul(b, Nat.mul(a, c)) == Nat.mul(a, Nat.mul(b, c)) : Nat} bend-mathlib@0.7.2.0/nat.bend mul_right_comm_sym @a:Nat -> @b:Nat -> @c:Nat -> {Nat.mul(Nat.mul(a, c), b) == Nat.mul(Nat.mul(a, b), c) : Nat} bend-mathlib@0.7.2.0/nat.bend mul_mul_mul_comm_sym @a:Nat -> @b:Nat -> @c:Nat -> @d:Nat -> {Nat.mul(Nat.mul(a, c), Nat.mul(b, d)) == Nat.mul(Nat.mul(a, b), Nat.mul(c, d)) : Nat} bend-mathlib@0.7.2.0/nat.bend zero_pow_sym @-n:Nat -> {0n == Nat.pow(0n, 1n+n) : Nat} bend-mathlib@0.7.2.0/nat.bend mul_pow_sym @+a:Nat -> @+b:Nat -> @n:Nat -> {Nat.mul(Nat.pow(a, n), Nat.pow(b, n)) == Nat.pow(Nat.mul(a, b), n) : Nat} bend-mathlib@0.7.2.0/nat.bend pow_mul_sym @a:Nat -> @m:Nat -> @n:Nat -> {Nat.pow(Nat.pow(a, m), n) == Nat.pow(a, Nat.mul(m, n)) : Nat} bend-mathlib@0.7.2.0/nat.bend add_sub_add_left_sym @k:Nat -> @-n:Nat -> @-m:Nat -> {Nat.sub(n, m) == Nat.sub(Nat.add(k, n), Nat.add(k, m)) : Nat} bend-mathlib@0.7.2.0/nat.bend add_sub_add_right_sym @n:Nat -> @k:Nat -> @m:Nat -> {Nat.sub(n, m) == Nat.sub(Nat.add(n, k), Nat.add(m, k)) : Nat} bend-mathlib@0.7.2.0/nat.bend sub_mul_sym @n:Nat -> @m:Nat -> @k:Nat -> {Nat.sub(Nat.mul(n, k), Nat.mul(m, k)) == Nat.mul(Nat.sub(n, m), k) : Nat} bend-mathlib@0.7.2.0/nat.bend mul_sub_sym @n:Nat -> @m:Nat -> @k:Nat -> {Nat.sub(Nat.mul(n, m), Nat.mul(n, k)) == Nat.mul(n, Nat.sub(m, k)) : Nat} bend-mathlib@0.7.2.0/nat.bend le_min_sym @a:Nat -> @b:Nat -> @c:Nat -> {Bool.and(Nat.is_le(a, b), Nat.is_le(a, c)) == Nat.is_le(a, Nat.min(b, c)) : Bool} bend-mathlib@0.7.2.0/nat.bend max_le_sym @a:Nat -> @b:Nat -> @c:Nat -> {Bool.and(Nat.is_le(a, c), Nat.is_le(b, c)) == Nat.is_le(Nat.max(a, b), c) : Bool} bend-mathlib@0.7.2.0/nat.bend lt_succ_iff_sym @m:Nat -> @n:Nat -> {Nat.is_le(m, n) == Nat.is_lt(m, 1n+n) : Bool} bend-mathlib@0.7.2.0/nat.bend le_iff_lt_or_eq_sym @a:Nat -> @b:Nat -> {Bool.or(Nat.is_lt(a, b), Nat.is_eq(a, b)) == Nat.is_le(a, b) : Bool} bend-mathlib@0.7.2.0/nat.bend lt_iff_le_and_ne_sym @a:Nat -> @b:Nat -> {Bool.and(Nat.is_le(a, b), Bool.not(Nat.is_eq(a, b))) == Nat.is_lt(a, b) : Bool} bend-mathlib@0.7.2.0/nat.bend add_lt_add_iff_left_sym @k:Nat -> @-a:Nat -> @-b:Nat -> {Nat.is_lt(Nat.add(k, a), Nat.add(k, b)) == Nat.is_lt(a, b) : Bool} bend-mathlib@0.7.2.0/nat.bend add_lt_add_iff_right_sym @a:Nat -> @b:Nat -> @k:Nat -> {Nat.is_lt(Nat.add(a, k), Nat.add(b, k)) == Nat.is_lt(a, b) : Bool} bend-mathlib@0.7.2.0/nat.bend min_max_distrib_left_sym @a:Nat -> @b:Nat -> @c:Nat -> {Nat.max(Nat.min(a, b), Nat.min(a, c)) == Nat.min(a, Nat.max(b, c)) : Nat} bend-mathlib@0.7.2.0/nat.bend max_min_distrib_left_sym @a:Nat -> @b:Nat -> @c:Nat -> {Nat.min(Nat.max(a, b), Nat.max(a, c)) == Nat.max(a, Nat.min(b, c)) : Nat} bend-mathlib@0.7.2.0/nat.bend min_add_add_left_sym @a:Nat -> @-b:Nat -> @-c:Nat -> {Nat.add(a, Nat.min(b, c)) == Nat.min(Nat.add(a, b), Nat.add(a, c)) : Nat} bend-mathlib@0.7.2.0/nat.bend min_add_add_right_sym @a:Nat -> @b:Nat -> @c:Nat -> {Nat.add(Nat.min(a, b), c) == Nat.min(Nat.add(a, c), Nat.add(b, c)) : Nat} bend-mathlib@0.7.2.0/nat.bend max_add_add_left_sym @a:Nat -> @-b:Nat -> @-c:Nat -> {Nat.add(a, Nat.max(b, c)) == Nat.max(Nat.add(a, b), Nat.add(a, c)) : Nat} bend-mathlib@0.7.2.0/nat.bend max_add_add_right_sym @a:Nat -> @b:Nat -> @c:Nat -> {Nat.add(Nat.max(a, b), c) == Nat.max(Nat.add(a, c), Nat.add(b, c)) : Nat} bend-mathlib@0.7.2.0/nat.bend min_lt_iff_sym @a:Nat -> @b:Nat -> @c:Nat -> {Bool.or(Nat.is_lt(a, c), Nat.is_lt(b, c)) == Nat.is_lt(Nat.min(a, b), c) : Bool} bend-mathlib@0.7.2.0/nat.bend lt_min_iff_sym @a:Nat -> @b:Nat -> @c:Nat -> {Bool.and(Nat.is_lt(a, b), Nat.is_lt(a, c)) == Nat.is_lt(a, Nat.min(b, c)) : Bool} bend-mathlib@0.7.2.0/nat.bend max_lt_iff_sym @a:Nat -> @b:Nat -> @c:Nat -> {Bool.and(Nat.is_lt(a, c), Nat.is_lt(b, c)) == Nat.is_lt(Nat.max(a, b), c) : Bool} bend-mathlib@0.7.2.0/nat.bend le_max_iff_sym @a:Nat -> @b:Nat -> @c:Nat -> {Bool.or(Nat.is_le(a, b), Nat.is_le(a, c)) == Nat.is_le(a, Nat.max(b, c)) : Bool} bend-mathlib@0.7.2.0/nat.bend add_mul_div_right_sym @x:Nat -> @z:Nat -> @b:Nat -> {Nat.add(Nat.div(x, 1n+b), z) == Nat.div(Nat.add(x, Nat.mul(z, 1n+b)), 1n+b) : Nat} bend-mathlib@0.7.2.0/nat.bend add_mul_div_left_sym @x:Nat -> @z:Nat -> @b:Nat -> {Nat.add(Nat.div(x, 1n+b), z) == Nat.div(Nat.add(x, Nat.mul(1n+b, z)), 1n+b) : Nat} bend-mathlib@0.7.2.0/nat.bend add_mul_mod_self_right_sym @a:Nat -> @b:Nat -> @c:Nat -> {Nat.mod(a, b) == Nat.mod(Nat.add(a, Nat.mul(c, b)), b) : Nat} bend-mathlib@0.7.2.0/nat.bend add_mul_mod_self_left_sym @a:Nat -> @b:Nat -> @c:Nat -> {Nat.mod(a, b) == Nat.mod(Nat.add(a, Nat.mul(b, c)), b) : Nat} bend-mathlib@0.7.2.0/nat.bend mod_two_eq_zero_or_one_sym @n:Nat -> {True{} == Bool.or(Nat.is_eq(Nat.mod(n, 2n), 0n), Nat.is_eq(Nat.mod(n, 2n), 1n)) : Bool} bend-mathlib@0.7.2.0/nat.bend div_add_mod_sym @a:Nat -> @b:Nat -> {a == Nat.add(Nat.mul(b, Nat.div(a, b)), Nat.mod(a, b)) : Nat} bend-mathlib@0.7.2.0/nat.bend two_mul_sym @n:Nat -> {Nat.add(n, n) == Nat.mul(2n, n) : Nat} bend-mathlib@0.7.2.0/nat.bend double_eq_two_mul_sym @n:Nat -> {Nat.mul(2n, n) == Nat.double(n) : Nat} bend-mathlib@0.7.2.0/nat.bend double_add_sym @a:Nat -> @b:Nat -> {Nat.add(Nat.double(a), Nat.double(b)) == Nat.double(Nat.add(a, b)) : Nat} bend-mathlib@0.7.2.0/nat.bend double_mul_sym @a:Nat -> @b:Nat -> {Nat.mul(Nat.double(a), b) == Nat.double(Nat.mul(a, b)) : Nat} bend-mathlib@0.7.2.0/nat.bend mul_double_sym @a:Nat -> @b:Nat -> {Nat.double(Nat.mul(a, b)) == Nat.mul(a, Nat.double(b)) : Nat} bend-mathlib@0.7.2.0/nat.bend double_sub_sym @a:Nat -> @b:Nat -> {Nat.sub(Nat.double(a), Nat.double(b)) == Nat.double(Nat.sub(a, b)) : Nat} bend-mathlib@0.7.2.0/nat.bend double_div_two_add_mod_two_sym @n:Nat -> {n == Nat.add(Nat.double(Nat.div(n, 2n)), Nat.mod(n, 2n)) : Nat} bend-mathlib@0.7.2.0/nat.bend add_le_add_iff_right_sym @a:Nat -> @b:Nat -> @k:Nat -> {Nat.is_le(Nat.add(a, k), Nat.add(b, k)) == Nat.is_le(a, b) : Bool} bend-mathlib@0.7.2.0/nat.bend add_left_cancel_iff_sym @k:Nat -> @-a:Nat -> @-b:Nat -> {Nat.is_eq(Nat.add(k, a), Nat.add(k, b)) == Nat.is_eq(a, b) : Bool} bend-mathlib@0.7.2.0/nat.bend add_right_cancel_iff_sym @a:Nat -> @b:Nat -> @k:Nat -> {Nat.is_eq(Nat.add(a, k), Nat.add(b, k)) == Nat.is_eq(a, b) : Bool} bend-mathlib@0.7.2.0/nat.bend mul_two_sym @n:Nat -> {Nat.add(n, n) == Nat.mul(n, 2n) : Nat} bend-mathlib@0.7.2.0/nat.bend pow_two_sym @n:Nat -> {Nat.mul(n, n) == Nat.pow(n, 2n) : Nat} bend-mathlib@0.7.2.0/nat.bend min_le_max_sym @a:Nat -> @b:Nat -> {True{} == Nat.is_le(Nat.min(a, b), Nat.max(a, b)) : Bool} bend-mathlib@0.7.2.0/order.bend le_trans3 @-A:Data -> @-le:(@_:A -> @_:A -> Bool) -> @-le_trans:(@x:A -> @y:A -> @z:A -> @_:{le(x, y) == True{} : Bool} -> @_:{le(y, z) == True{} : Bool} -> {le(x, z) == True{} : Bool}) -> @+a:A -> @+b:A -> @+c:A -> @+d:A -> @ab:{le(a, b) == True{} : Bool} -> @bc:{le(b, c) == True{} : Bool} -> @cd:{le(c, d) == True{} : Bool} -> {le(a, d) == True{} : Bool} bend-mathlib@0.7.2.0/order.bend le_trans4 @-A:Data -> @-le:(@_:A -> @_:A -> Bool) -> @-le_trans:(@x:A -> @y:A -> @z:A -> @_:{le(x, y) == True{} : Bool} -> @_:{le(y, z) == True{} : Bool} -> {le(x, z) == True{} : Bool}) -> @+a:A -> @+b:A -> @+c:A -> @+d:A -> @+e:A -> @ab:{le(a, b) == True{} : Bool} -> @bc:{le(b, c) == True{} : Bool} -> @cd:{le(c, d) == True{} : Bool} -> @de:{le(d, e) == True{} : Bool} -> {le(a, e) == True{} : Bool} bend-mathlib@0.7.2.0/order.bend le_antisymm_eq @-A:Data -> @-le:(@_:A -> @_:A -> Bool) -> @-le_antisymm:(@x:A -> @y:A -> @_:{le(x, y) == True{} : Bool} -> @_:{le(y, x) == True{} : Bool} -> {x == y : A}) -> @+a:A -> @+b:A -> @ab:{le(a, b) == True{} : Bool} -> @ba:{le(b, a) == True{} : Bool} -> {a == b : A} bend-mathlib@0.7.2.0/order.bend le_total_true @-A:Data -> @-le:(@_:A -> @_:A -> Bool) -> @-le_total:(@x:A -> @y:A -> {Bool.or(le(x, y), le(y, x)) == True{} : Bool}) -> @+a:A -> @+b:A -> {Bool.or(le(a, b), le(b, a)) == True{} : Bool} bend-mathlib@0.7.2.0/order.bend le_total_of_not_le @-A:Data -> @-le:(@_:A -> @_:A -> Bool) -> @-le_total:(@x:A -> @y:A -> {Bool.or(le(x, y), le(y, x)) == True{} : Bool}) -> @+a:A -> @+b:A -> @h:{le(a, b) == False{} : Bool} -> {le(b, a) == True{} : Bool} bend-mathlib@0.7.2.0/order.bend le_total_true_sym @-A:Data -> @-le:(@_:A -> @_:A -> Bool) -> @-le_total:(@x:A -> @y:A -> {Bool.or(le(x, y), le(y, x)) == True{} : Bool}) -> @+a:A -> @+b:A -> {True{} == Bool.or(le(a, b), le(b, a)) : Bool} bend-mathlib@0.7.2.0/string.bend append_nil @a:String -> {String.append(a, "") == a : String} bend-mathlib@0.7.2.0/string.bend nil_append @-a:String -> {String.append("", a) == a : String} bend-mathlib@0.7.2.0/string.bend append_assoc @a:String -> @-b:String -> @-c:String -> {String.append(String.append(a, b), c) == String.append(a, String.append(b, c)) : String} bend-mathlib@0.7.2.0/string.bend length_append @a:String -> @-b:String -> {String.length(String.append(a, b)) == Nat.add(String.length(a), String.length(b)) : Nat} bend-mathlib@0.7.2.0/string.bend reverse_go_spec @s:String -> @acc:String -> {String.reverse.go(s, acc) == String.append(String.reverse(s), acc) : String} bend-mathlib@0.7.2.0/string.bend reverse_append @a:String -> @b:String -> {String.reverse(String.append(a, b)) == String.append(String.reverse(b), String.reverse(a)) : String} bend-mathlib@0.7.2.0/string.bend reverse_reverse @a:String -> {String.reverse(String.reverse(a)) == a : String} bend-mathlib@0.7.2.0/string.bend u32_cmp_refl @x:U32 -> {U32.cmp(x, x) == EQ{} : Cmp} bend-mathlib@0.7.2.0/string.bend char_cmp_refl @c:Char -> {Char.cmp(c, c) == ((c, c), EQ{}) : Pair(Pair(Char, Char), Cmp)} bend-mathlib@0.7.2.0/string.bend cmp_refl @s:String -> {String.cmp(s, s) == ((s, s), EQ{}) : Pair(Pair(String, String), Cmp)} bend-mathlib@0.7.2.0/string.bend eq_refl @s:String -> {String.eq(s, s) == True{} : Bool} bend-mathlib@0.7.2.0/string.bend u32_eq_of_is_eq @a:U32 -> @b:U32 -> @h:{U32.is_eq(a, b) == True{} : Bool} -> {a == b : U32} bend-mathlib@0.7.2.0/string.bend char_eq_of_is_eq @a:Char -> @b:Char -> @h:{Char.is_eq(a, b) == True{} : Bool} -> {a == b : Char} bend-mathlib@0.7.2.0/string.bend eq_of_eq_true @a:String -> @b:String -> @h:{String.eq(a, b) == True{} : Bool} -> {a == b : String} bend-mathlib@0.7.2.0/string.bend length_reverse @s:String -> {String.length(String.reverse(s)) == String.length(s) : Nat} bend-mathlib@0.7.2.0/string.bend reverse_nil {String.reverse("") == "" : String} bend-mathlib@0.7.2.0/string.bend reverse_singleton @-c:Char -> {String.reverse(SCon{c, ""}) == SCon{c, ""} : String} bend-mathlib@0.7.2.0/string.bend is_empty_iff_length_eq_zero @s:String -> {String.is_empty(s) == Nat.is_eq(String.length(s), 0n) : Bool} bend-mathlib@0.7.2.0/string.bend is_empty_append @a:String -> @-b:String -> {String.is_empty(String.append(a, b)) == Bool.and(String.is_empty(a), String.is_empty(b)) : Bool} bend-mathlib@0.7.2.0/string.bend is_empty_reverse @s:String -> {String.is_empty(String.reverse(s)) == String.is_empty(s) : Bool} bend-mathlib@0.7.2.0/string.bend take_append_drop @s:String -> @n:Nat -> {String.append(String.take(s, n), String.drop(s, n)) == s : String} bend-mathlib@0.7.2.0/string.bend length_take @s:String -> @n:Nat -> {String.length(String.take(s, n)) == Nat.min(n, String.length(s)) : Nat} bend-mathlib@0.7.2.0/string.bend length_drop @s:String -> @n:Nat -> {String.length(String.drop(s, n)) == Nat.sub(String.length(s), n) : Nat} bend-mathlib@0.7.2.0/string.bend to_list_from_list @cs:List<&2, Char> -> {String.to_list(String.from_list(cs)) == cs : List<&2, Char>} bend-mathlib@0.7.2.0/string.bend from_list_to_list @s:String -> {String.from_list(String.to_list(s)) == s : String} bend-mathlib@0.7.2.0/string.bend to_list_append @a:String -> @-b:String -> {String.to_list(String.append(a, b)) == List.append(&2, Char, String.to_list(a), String.to_list(b)) : List<&2, Char>} bend-mathlib@0.7.2.0/string.bend length_to_list @s:String -> {List.length(&2, Char, String.to_list(s)) == String.length(s) : Nat} bend-mathlib@0.7.2.0/string.bend append_nil_sym @a:String -> {a == String.append(a, "") : String} bend-mathlib@0.7.2.0/string.bend nil_append_sym @-a:String -> {a == String.append("", a) : String} bend-mathlib@0.7.2.0/string.bend append_assoc_sym @a:String -> @-b:String -> @-c:String -> {String.append(a, String.append(b, c)) == String.append(String.append(a, b), c) : String} bend-mathlib@0.7.2.0/string.bend length_append_sym @a:String -> @-b:String -> {Nat.add(String.length(a), String.length(b)) == String.length(String.append(a, b)) : Nat} bend-mathlib@0.7.2.0/string.bend reverse_go_spec_sym @s:String -> @acc:String -> {String.append(String.reverse(s), acc) == String.reverse.go(s, acc) : String} bend-mathlib@0.7.2.0/string.bend reverse_append_sym @a:String -> @b:String -> {String.append(String.reverse(b), String.reverse(a)) == String.reverse(String.append(a, b)) : String} bend-mathlib@0.7.2.0/string.bend reverse_reverse_sym @a:String -> {a == String.reverse(String.reverse(a)) : String} bend-mathlib@0.7.2.0/string.bend u32_cmp_refl_sym @x:U32 -> {EQ{} == U32.cmp(x, x) : Cmp} bend-mathlib@0.7.2.0/string.bend char_cmp_refl_sym @c:Char -> {((c, c), EQ{}) == Char.cmp(c, c) : Pair(Pair(Char, Char), Cmp)} bend-mathlib@0.7.2.0/string.bend cmp_refl_sym @s:String -> {((s, s), EQ{}) == String.cmp(s, s) : Pair(Pair(String, String), Cmp)} bend-mathlib@0.7.2.0/string.bend eq_refl_sym @s:String -> {True{} == String.eq(s, s) : Bool} bend-mathlib@0.7.2.0/string.bend length_reverse_sym @s:String -> {String.length(s) == String.length(String.reverse(s)) : Nat} bend-mathlib@0.7.2.0/string.bend reverse_nil_sym {"" == String.reverse("") : String} bend-mathlib@0.7.2.0/string.bend reverse_singleton_sym @-c:Char -> {SCon{c, ""} == String.reverse(SCon{c, ""}) : String} bend-mathlib@0.7.2.0/string.bend is_empty_iff_length_eq_zero_sym @s:String -> {Nat.is_eq(String.length(s), 0n) == String.is_empty(s) : Bool} bend-mathlib@0.7.2.0/string.bend is_empty_append_sym @a:String -> @-b:String -> {Bool.and(String.is_empty(a), String.is_empty(b)) == String.is_empty(String.append(a, b)) : Bool} bend-mathlib@0.7.2.0/string.bend is_empty_reverse_sym @s:String -> {String.is_empty(s) == String.is_empty(String.reverse(s)) : Bool} bend-mathlib@0.7.2.0/string.bend take_append_drop_sym @s:String -> @n:Nat -> {s == String.append(String.take(s, n), String.drop(s, n)) : String} bend-mathlib@0.7.2.0/string.bend length_take_sym @s:String -> @n:Nat -> {Nat.min(n, String.length(s)) == String.length(String.take(s, n)) : Nat} bend-mathlib@0.7.2.0/string.bend length_drop_sym @s:String -> @n:Nat -> {Nat.sub(String.length(s), n) == String.length(String.drop(s, n)) : Nat} bend-mathlib@0.7.2.0/string.bend to_list_from_list_sym @cs:List<&2, Char> -> {cs == String.to_list(String.from_list(cs)) : List<&2, Char>} bend-mathlib@0.7.2.0/string.bend from_list_to_list_sym @s:String -> {s == String.from_list(String.to_list(s)) : String} bend-mathlib@0.7.2.0/string.bend to_list_append_sym @a:String -> @-b:String -> {List.append(&2, Char, String.to_list(a), String.to_list(b)) == String.to_list(String.append(a, b)) : List<&2, Char>} bend-mathlib@0.7.2.0/string.bend length_to_list_sym @s:String -> {String.length(s) == List.length(&2, Char, String.to_list(s)) : Nat} bend-ml-autograd@0.1.1.0/main.bend reverse_eq_forward @+e:NE -> @+x:Nat -> {nbwd(e, x, 1n) == nfwd(e, x) : Nat} bend-ml-bpe-tokenizer@0.1.2.0/main.bend roundtrip @+table:List<&2, Rule> -> @+bs:List<&2, Nat> -> @+w:{True{} == wf(table) : Bool} -> {decode(table, encode(table, lift(bs))) == bs : List<&2, Nat>} bend-ml-bpe-tokenizer@0.1.2.0/main.bend vocab_bound @+table:List<&2, Rule> -> @+bs:List<&2, Nat> -> @+w:{True{} == wf(table) : Bool} -> {True{} == knl(List.reverse(&2, Rule, table), encode(table, lift(bs))) : Bool} bend-ml-bpe-tokenizer@0.1.2.0/main.bend dec_append @+D:List<&2, Rule> -> @xs:List<&2, Tk> -> @+ys:List<&2, Tk> -> {dec(D, List.append(&2, Tk, xs, ys)) == List.append(&2, Nat, dec(D, xs), dec(D, ys)) : List<&2, Nat>} bend-ml-bpe-tokenizer@0.1.2.0/main.bend train_wf @n:Nat -> @+next:Nat -> @+xs:List<&2, Tk> -> {True{} == wf(train(n, next, xs)) : Bool} bend-ml-bpe-tokenizer@0.1.2.0/main.bend roundtrip_trained @+n:Nat -> @+corpus:List<&2, Nat> -> @+bs:List<&2, Nat> -> {decode(train(n, 0n, lift(corpus)), encode(train(n, 0n, lift(corpus)), lift(bs))) == bs : List<&2, Nat>} bend-ml-nat-lemmas@0.1.1.0/main.bend add_zero @a:Nat -> {Nat.add(a, 0n) == a : Nat} bend-ml-nat-lemmas@0.1.1.0/main.bend add_succ @a:Nat -> @-b:Nat -> {1n+Nat.add(a, b) == Nat.add(a, 1n+b) : Nat} bend-ml-nat-lemmas@0.1.1.0/main.bend add_comm @a:Nat -> @+b:Nat -> {Nat.add(a, b) == Nat.add(b, a) : Nat} bend-ml-nat-lemmas@0.1.1.0/main.bend add_assoc @a:Nat -> @-b:Nat -> @-c:Nat -> {Nat.add(a, Nat.add(b, c)) == Nat.add(Nat.add(a, b), c) : Nat} bend-ml-nat-lemmas@0.1.1.0/main.bend mul_zero @a:Nat -> {Nat.mul(a, 0n) == 0n : Nat} bend-ml-nat-lemmas@0.1.1.0/main.bend mul_succ @+a:Nat -> @+b:Nat -> {Nat.mul(a, 1n+b) == Nat.add(a, Nat.mul(a, b)) : Nat} bend-ml-nat-lemmas@0.1.1.0/main.bend mul_comm @+a:Nat -> @+b:Nat -> {Nat.mul(a, b) == Nat.mul(b, a) : Nat} bend-ml-nat-lemmas@0.1.1.0/main.bend mul_dist @a:Nat -> @-b:Nat -> @+c:Nat -> {Nat.add(Nat.mul(a, c), Nat.mul(b, c)) == Nat.mul(Nat.add(a, b), c) : Nat} bend-ml-nat-lemmas@0.1.1.0/main.bend mul_assoc @+a:Nat -> @+b:Nat -> @+c:Nat -> {Nat.mul(a, Nat.mul(b, c)) == Nat.mul(Nat.mul(a, b), c) : Nat} bend-ml-nat-lemmas@0.1.1.0/main.bend mul_one_l @+a:Nat -> {Nat.mul(1n, a) == a : Nat} bend-ml-nat-lemmas@0.1.1.0/main.bend mul_one_r @+a:Nat -> {Nat.mul(a, 1n) == a : Nat} bend-ml-nat-lemmas@0.1.1.0/main.bend append_nil @-A:Data -> @xs:List<&2, A> -> {List.append(&2, A, xs, []) == xs : List<&2, A>} bend-ml-nat-lemmas@0.1.1.0/main.bend append_assoc @-A:Data -> @xs:List<&2, A> -> @ys:List<&2, A> -> @zs:List<&2, A> -> {List.append(&2, A, List.append(&2, A, xs, ys), zs) == List.append(&2, A, xs, List.append(&2, A, ys, zs)) : List<&2, A>} bend-ml-nat-lemmas@0.1.1.0/main.bend length_append @-A:Data -> @xs:List<&2, A> -> @ys:List<&2, A> -> {List.length(&2, A, List.append(&2, A, xs, ys)) == Nat.add(List.length(&2, A, xs), List.length(&2, A, ys)) : Nat} bend-ml-nat-lemmas@0.1.1.0/main.bend product_append @+xs:List<&2, Nat> -> @+ys:List<&2, Nat> -> {product(List.append(&2, Nat, xs, ys)) == Nat.mul(product(xs), product(ys)) : Nat} bend-ml-tensor-array@0.1.7.0/main.bend cap_ok @+n:Nat -> {True{} == leb(n, pow2(cap_depth(n))) : Bool} bend-ml-tensor-array@0.1.7.0/main.bend half_cover @+n:Nat -> {n == Nat.add(half(n), Nat.sub(n, half(n))) : Nat} bend-ml-tensor-array@0.1.7.0/main.bend leaf_len @-r:Nat -> @-c:Nat -> @w:Array -> @+mleft:Nat -> @+idx:U32 -> @+acc:List<&2, F32> -> @rc:Pair(Array, F32) -> {bl_len(r, c, bv_g2(r, c, w, read_l(mleft, idx, acc, rc))) == Nat.add(1n+mleft, List.length(&2, F32, acc)) : Nat} bend-ml-tensor-array@0.1.7.0/main.bend band_len @-r:Nat -> @+c:Nat -> @+rows:Nat -> @x:Array -> @w:Array -> {bl_len(r, c, bv_gemm(r, c, rows, rows, x, w)) == rows : Nat} bend-ml-tensor@0.1.2.0/main.bend reshape_swap @+r:Nat -> @+c:Nat -> {Nat.mul(r, c) == Nat.mul(c, r) : Nat} bend-ml-tensor@0.1.2.0/main.bend reshape_flat @+r:Nat -> @+c:Nat -> {Nat.mul(r, c) == Nat.mul(1n, Nat.mul(r, c)) : Nat} qasim-bend-kit@0.1.0.2/libs/AES256GCM.bend key @bytes:List<&2, U32> -> Result<&2, &2, Error, SecretKey> qasim-bend-kit@0.1.0.2/libs/AES256GCM.bend nonce @bytes:List<&2, U32> -> Result<&2, &2, Error, Nonce> qasim-bend-kit@0.1.0.2/libs/AES256GCM.bend encrypt @key:SecretKey -> @nonce:Nonce -> @aad:List<&2, U32> -> @plaintext:List<&2, U32> -> Result<&2, &2, Error, Envelope> qasim-bend-kit@0.1.0.2/libs/AES256GCM.bend decrypt @key:SecretKey -> @aad:List<&2, U32> -> @envelope:Envelope -> Result<&2, &2, Error, List<&2, U32>> qasim-bend-kit@0.1.0.2/libs/AES256GCM.bend encode @envelope:Envelope -> String qasim-bend-kit@0.1.0.2/libs/AES256GCM.bend parse @text:String -> Result<&2, &2, Error, Envelope> stelliferous@0.0.2.0/math_sequence.bend Values @-Element:Data -> @length:Nat -> Data stelliferous@0.0.2.0/math_sequence.bend Index @length:Nat -> Data stelliferous@0.0.2.0/proofs/binary_division.bend go_total @+n:Nat -> @+w:Word(n) -> @+b:Nat -> {total(go(n, w, b), b) == Word.to_nat(n, w) : Nat} stelliferous@0.0.2.0/proofs/binary_division.bend go_bound @+n:Nat -> @+w:Word(n) -> @+b:Nat -> @positive:{Nat.is_lt(0n, b) == True{} : Bool} -> {Nat.is_lt(remainder(go(n, w, b)), b) == True{} : Bool} stelliferous@0.0.2.0/proofs/boolean_logic.bend every_condition_holds @+conditions:List<&2, Bool> -> @+index:Nat -> @truth:{all(conditions) == True{} : Bool} -> {condition_at(conditions, index) == True{} : Bool} stelliferous@0.0.2.0/proofs/nat_division.bend bump_go @+n:Nat -> @+m:Nat -> @+d:Nat -> @+r:Nat -> {Nat.divmod.go(n, m, 1n+d, r) == bump(Nat.divmod.go(n, m, d, r)) : Pair(Nat, Nat)} stelliferous@0.0.2.0/proofs/nat_division.bend cycle @+m:Nat -> @+tail:Nat -> @+d:Nat -> @+r:Nat -> {Nat.divmod.go(Nat.add(1n+m, tail), m, d, r) == Nat.divmod.go(tail, Nat.add(m, r), 1n+d, 0n) : Pair(Nat, Nat)} stelliferous@0.0.2.0/proofs/nat_division.bend quotient_remainder @+q:Nat -> @+r:Nat -> @+b:Nat -> @+positive:{Nat.is_lt(0n, b) == True{} : Bool} -> @+bounded:{Nat.is_lt(r, b) == True{} : Bool} -> {Nat.divmod(Nat.add(Nat.mul(q, b), r), b) == (q, r) : Pair(Nat, Nat)} stelliferous@0.0.2.0/proofs/nat_to_u32_bounds.bend roundtrip @+n:Nat -> @+cap:U32 -> @+cap_ok:{U32.is_le(cap, 2147483648) == True{} : Bool} -> @h:{Nat.is_le(n, U32.to_nat(cap)) == True{} : Bool} -> {U32.to_nat(U32.from_nat(n)) == n : Nat} stelliferous@0.0.2.0/proofs/natural_addition.bend successor_right @+a:Nat -> @+b:Nat -> {Nat.add(a, 1n+b) == 1n+Nat.add(a, b) : Nat} stelliferous@0.0.2.0/proofs/natural_addition.bend double @+n:Nat -> {Nat.add(n, n) == Nat.double(n) : Nat} stelliferous@0.0.2.0/proofs/natural_addition.bend zero_right @+n:Nat -> {Nat.add(n, 0n) == n : Nat} stelliferous@0.0.2.0/proofs/natural_addition.bend successor_width @+width:Nat -> {Nat.add(width, 1n) == 1n+width : Nat} stelliferous@0.0.2.0/proofs/natural_addition.bend associative @+first:Nat -> @+second:Nat -> @+third:Nat -> {Nat.add(Nat.add(first, second), third) == Nat.add(first, Nat.add(second, third)) : Nat} stelliferous@0.0.2.0/proofs/storage_refinement.bend fresh @-T:Data -> @+depth:Nat -> @+value:T -> {Array.new(T, depth, value) == 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.fresh(T, depth, value)) : Array} stelliferous@0.0.2.0/proofs/storage_refinement.bend clone @-T:Data -> @+tree:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.Tree -> {Array.clone(T, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, tree)) == (0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, tree), 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, tree)) : Pair(Array, Array)} stelliferous@0.0.2.0/proofs/storage_refinement.bend read @-T:Data -> @+tree:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.Tree -> @+i:U32 -> {Array.get(T, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, tree), i) == (0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, tree), 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.read(T, tree, i)) : Pair(Array, T)} stelliferous@0.0.2.0/proofs/storage_refinement.bend write @-T:Data -> @+tree:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.Tree -> @+i:U32 -> @+value:T -> {Array.set(T, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, tree), i, value) == 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.write(T, tree, i, value)) : Array} stelliferous@0.0.2.0/proofs/storage_refinement.bend size @-T:Data -> @+tree:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.Tree -> {Array.size(T, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, tree)) == (0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, tree), 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.capacity(T, tree)) : Pair(Array, U32)} stelliferous@0.0.2.0/proofs/storage_refinement.bend get_node @-T:Data -> @+l:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.Tree -> @+r:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.Tree -> @+n:U32 -> @+i:U32 -> @+z:Bool -> @pl:{Array.get.go(T, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, l), U32.shr(n), i, U32.is_lt(i, U32.shr(U32.shr(n)))) == (0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, l), 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.fetch(T, l, U32.shr(n), i)) : Pair(Array, T)} -> @pr:{Array.get.go(T, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, r), U32.shr(n), U32.sub(i, U32.shr(n)), U32.is_lt(U32.sub(i, U32.shr(n)), U32.shr(U32.shr(n)))) == (0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, r), 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.fetch(T, r, U32.shr(n), U32.sub(i, U32.shr(n)))) : Pair(Array, T)} -> {Array.get.go(T, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.Node{l, r}), n, i, z) == (0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.Node{l, r}), Bool.pick(T, z, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.fetch(T, l, U32.shr(n), i), 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.fetch(T, r, U32.shr(n), U32.sub(i, U32.shr(n))))) : Pair(Array, T)} stelliferous@0.0.2.0/proofs/storage_refinement.bend get_go @-T:Data -> @+tree:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.Tree -> @+n:U32 -> @+i:U32 -> {Array.get.go(T, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, tree), n, i, U32.is_lt(i, U32.shr(n))) == (0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, tree), 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.fetch(T, tree, n, i)) : Pair(Array, T)} stelliferous@0.0.2.0/proofs/storage_refinement.bend swap_node @-T:Data -> @+l:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.Tree -> @+r:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.Tree -> @+n:U32 -> @+i:U32 -> @+v:T -> @+z:Bool -> @pl:{Array.swap.go(T, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, l), U32.shr(n), i, v, U32.is_lt(i, U32.shr(U32.shr(n)))) == (0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.store(T, l, U32.shr(n), i, v)), 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.fetch(T, l, U32.shr(n), i)) : Pair(Array, T)} -> @pr:{Array.swap.go(T, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, r), U32.shr(n), U32.sub(i, U32.shr(n)), v, U32.is_lt(U32.sub(i, U32.shr(n)), U32.shr(U32.shr(n)))) == (0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.store(T, r, U32.shr(n), U32.sub(i, U32.shr(n)), v)), 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.fetch(T, r, U32.shr(n), U32.sub(i, U32.shr(n)))) : Pair(Array, T)} -> {Array.swap.go(T, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.Node{l, r}), n, i, v, z) == (0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, Bool.pick(0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.Tree, z, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.Node{0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.store(T, l, U32.shr(n), i, v), r}, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.Node{l, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.store(T, r, U32.shr(n), U32.sub(i, U32.shr(n)), v)})), Bool.pick(T, z, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.fetch(T, l, U32.shr(n), i), 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.fetch(T, r, U32.shr(n), U32.sub(i, U32.shr(n))))) : Pair(Array, T)} stelliferous@0.0.2.0/proofs/storage_refinement.bend swap_go @-T:Data -> @+tree:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.Tree -> @+n:U32 -> @+i:U32 -> @+v:T -> {Array.swap.go(T, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, tree), n, i, v, U32.is_lt(i, U32.shr(n))) == (0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.store(T, tree, n, i, v)), 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.fetch(T, tree, n, i)) : Pair(Array, T)} stelliferous@0.0.2.0/proofs/storage_refinement.bend swap @-T:Data -> @+tree:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.Tree -> @+i:U32 -> @+v:T -> {Array.swap(T, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, tree), i, v) == (0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.pack(T, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.write(T, tree, i, v)), 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.read(T, tree, i)) : Pair(Array, T)} stelliferous@0.0.2.0/proofs/storage_shape.bend Balanced @-Element:Data -> @depth:Nat -> @tree:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/storage_tree_model.Tree -> Data stelliferous@0.0.2.0/proofs/storage_witness.bend Witness @-Element:Data -> @depth:Nat -> @storage:Array -> Data stelliferous@0.0.2.0/proofs/u32_comparison.bend digits @+a:Nat -> @+b:Nat -> @+ab:Bool -> @+bb:Bool -> {Nat.cmp(digit(ab, a), digit(bb, b)) == Word.cmp.fin(ab, bb, Nat.cmp(a, b)) : Cmp} stelliferous@0.0.2.0/proofs/u32_comparison.bend word @+n:Nat -> @+a:Word(n) -> @+b:Word(n) -> {Word.cmp(n, a, b) == Nat.cmp(Word.to_nat(n, a), Word.to_nat(n, b)) : Cmp} stelliferous@0.0.2.0/proofs/u32_comparison.bend uint @+a:U32 -> @+b:U32 -> {U32.cmp(a, b) == Nat.cmp(U32.to_nat(a), U32.to_nat(b)) : Cmp} stelliferous@0.0.2.0/proofs/u32_division.bend step @+p:Nat -> @+bit:Bool -> @+b:U32 -> @+cap:U32 -> @+cap_ok:{U32.is_le(cap, 2147483648) == True{} : Bool} -> @+divisor_bound:{Nat.is_le(Nat.double(U32.to_nat(b)), U32.to_nat(cap)) == True{} : Bool} -> @pair:Pair(Word(p), U32) -> @small:{Nat.is_lt(0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/binary_division.remainder(decode(p, pair)), U32.to_nat(b)) == True{} : Bool} -> {decode(1n+p, U32.divmod.go.rec(p, bit, b, pair)) == 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/binary_division.step(bit, U32.to_nat(b), decode(p, pair)) : 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/binary_division.Quotient} stelliferous@0.0.2.0/proofs/u32_division.bend go @+n:Nat -> @+w:Word(n) -> @+b:U32 -> @+cap:U32 -> @+cap_ok:{U32.is_le(cap, 2147483648) == True{} : Bool} -> @+divisor_bound:{Nat.is_le(Nat.double(U32.to_nat(b)), U32.to_nat(cap)) == True{} : Bool} -> @+positive:{Nat.is_lt(0n, U32.to_nat(b)) == True{} : Bool} -> {decode(n, U32.divmod.go(n, w, b)) == 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/binary_division.go(n, w, U32.to_nat(b)) : 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/binary_division.Quotient} stelliferous@0.0.2.0/proofs/u32_shift.bend out_pad @+n:Nat -> @+c:Bool -> @+w:Word(n) -> {Word.shl.out(1n+n, c, Word.shr.pad(n, w)) == (False{}, Word.shl.put(1n+n, c, Word.shr.pad(n, w))) : Pair(Bool, Word(1n+n))} stelliferous@0.0.2.0/proofs/u32_successor.bend pad_nat @+n:Nat -> @+w:Word(n) -> {Word.to_nat(1n+n, Word.shr.pad(n, w)) == Word.to_nat(n, w) : Nat} stelliferous@0.0.2.0/proofs/u32_successor.bend inc_nat @+n:Nat -> @+w:Word(n) -> {Word.to_nat(1n+n, Word.inc(1n+n, Word.shr.pad(n, w))) == 1n+Word.to_nat(n, w) : Nat} stelliferous@0.0.2.0/proofs/u32_successor.bend adc_zero @+n:Nat -> @+w:Word(n) -> {Word.adc(n, w, Word.zero(n), False{}, False{}) == w : Word(n)} stelliferous@0.0.2.0/proofs/u32_successor.bend adc_one @+n:Nat -> @+w:Word(n) -> {Word.adc(n, w, Word.zero(n), False{}, True{}) == Word.inc(n, w) : Word(n)} stelliferous@0.0.2.0/proofs/u32_successor.bend add_one @+n:Nat -> @+w:Word(n) -> {Word.add(n, w, Word.inc(n, Word.zero(n))) == Word.inc(n, w) : Word(n)} stelliferous@0.0.2.0/proofs/u32_successor.bend concat_pad @+width:Nat -> @+word:Word(width) -> {0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/word_width.transport(Nat.add(width, 1n), 1n+width, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/word_encoding.concat(width, 1n, word, Word.zero(1n)), 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/natural_addition.successor_width(width)) == Word.shr.pad(width, word) : Word(1n+width)} stelliferous@0.0.2.0/proofs/u32_successor.bend successor @+i:U32 -> Goal(i) stelliferous@0.0.2.0/proofs/word_arithmetic.bend carry @+n:Nat -> @+a:Word(n) -> @+b:Word(n) -> {Word.adc(n, a, b, False{}, True{}) == Word.inc(n, Word.add(n, a, b)) : Word(n)} stelliferous@0.0.2.0/proofs/word_arithmetic.bend inc_left @+n:Nat -> @+a:Word(n) -> @+b:Word(n) -> {Word.add(n, Word.inc(n, a), b) == Word.inc(n, Word.add(n, a, b)) : Word(n)} stelliferous@0.0.2.0/proofs/word_arithmetic.bend encode_add @+a:Nat -> @+b:Nat -> @+width:Nat -> {Word.add(width, encode(a, width), encode(b, width)) == encode(Nat.add(a, b), width) : Word(width)} stelliferous@0.0.2.0/proofs/word_arithmetic.bend double_carry @+n:Nat -> @+w:Word(n) -> @+c:Bool -> {Word.adc(n, w, w, False{}, c) == Word.shl.put(n, c, w) : Word(n)} stelliferous@0.0.2.0/proofs/word_arithmetic.bend native_encoding @+a:Nat -> {U32.from_nat(a) == U32{encode(a, 32n)} : U32} stelliferous@0.0.2.0/proofs/word_encoding.bend double_add @+a:Nat -> @+b:Nat -> {Nat.double(Nat.add(a, b)) == Nat.add(Nat.double(a), Nat.double(b)) : Nat} stelliferous@0.0.2.0/proofs/word_encoding.bend zero_nat @+n:Nat -> {Word.to_nat(n, Word.zero(n)) == 0n : Nat} stelliferous@0.0.2.0/proofs/word_encoding.bend finish_lt_zero @+b:Bool -> @+c:Cmp -> {Cmp.is_lt(Word.cmp.fin(b, False{}, c)) == Cmp.is_lt(c) : Bool} stelliferous@0.0.2.0/proofs/word_encoding.bend compare_high_only @+n:Nat -> @+m:Nat -> @+w:Word(n) -> @+top:Word(m) -> @+other:Word(m) -> {Cmp.is_lt(Word.cmp(Nat.add(n, m), concat(n, m, w, top), concat(n, m, Word.zero(n), other))) == Cmp.is_lt(Word.cmp(m, top, other)) : Bool} stelliferous@0.0.2.0/proofs/word_encoding.bend nonnegative @+n:Nat -> @+w:Word(n) -> {Cmp.is_lt(Word.cmp(n, w, Word.zero(n))) == False{} : Bool} stelliferous@0.0.2.0/proofs/word_encoding.bend finish_one @+b:Bool -> @+c:Cmp -> @nonneg:{Cmp.is_lt(c) == False{} : Bool} -> {Cmp.is_lt(Word.cmp.fin(b, True{}, c)) == Cmp.is_eq(Word.cmp.fin(b, False{}, c)) : Bool} stelliferous@0.0.2.0/proofs/word_encoding.bend less_one_is_zero @+n:Nat -> @+w:Word(1n+n) -> {Cmp.is_lt(Word.cmp(1n+n, w, WCon{True{}, Word.zero(n)})) == Cmp.is_eq(Word.cmp(1n+n, w, Word.zero(1n+n))) : Bool} stelliferous@0.0.2.0/proofs/word_encoding.bend join_prepend @+n:Nat -> @+m:Nat -> @+b:Bool -> @+parts:Split -> {WCon{b, join(n, m, parts)} == join(1n+n, m, prepend(n, m, b, parts)) : Word(1n+Nat.add(n, m))} stelliferous@0.0.2.0/proofs/word_encoding.bend recover @+n:Nat -> @+m:Nat -> @+w:Word(Nat.add(n, m)) -> {join(n, m, split(n, m, w)) == w : Word(Nat.add(n, m))} stelliferous@0.0.2.0/proofs/word_encoding.bend cmp_eq @+c:Cmp -> @yes:{Cmp.is_eq(c) == True{} : Bool} -> {c == EQ{} : Cmp} stelliferous@0.0.2.0/proofs/word_encoding.bend finish_eq_parts @+b:Bool -> @+c:Cmp -> @eq:{Word.cmp.fin(b, False{}, c) == EQ{} : Cmp} -> Pair({b == False{} : Bool}, {c == EQ{} : Cmp}) stelliferous@0.0.2.0/proofs/word_encoding.bend zero_reflect @+n:Nat -> @+w:Word(n) -> @eq:{Word.cmp(n, w, Word.zero(n)) == EQ{} : Cmp} -> {w == Word.zero(n) : Word(n)} stelliferous@0.0.2.0/proofs/word_encoding.bend below_one_zero @+n:Nat -> @+w:Word(1n+n) -> @below:{Cmp.is_lt(Word.cmp(1n+n, w, WCon{True{}, Word.zero(n)})) == True{} : Bool} -> {w == Word.zero(1n+n) : Word(1n+n)} stelliferous@0.0.2.0/proofs/word_encoding.bend and_zero @+n:Nat -> @+w:Word(n) -> {Word.and(n, w, Word.zero(n)) == Word.zero(n) : Word(n)} stelliferous@0.0.2.0/proofs/word_encoding.bend upper_zero @+n:Nat -> @+m:Nat -> @+low:Word(n) -> @+high:Word(1n+m) -> @bound:{Cmp.is_lt(Word.cmp(Nat.add(n, 1n+m), concat(n, 1n+m, low, high), concat(n, 1n+m, Word.zero(n), WCon{True{}, Word.zero(m)}))) == True{} : Bool} -> {high == Word.zero(1n+m) : Word(1n+m)} stelliferous@0.0.2.0/proofs/word_multiplication.bend word_roundtrip @+n:Nat -> @+w:Word(n) -> {0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/word_arithmetic.encode(Word.to_nat(n, w), n) == w : Word(n)} stelliferous@0.0.2.0/proofs/word_multiplication.bend multiply_go @+m:Nat -> @+n:Nat -> @+w:Word(m) -> @+b:Nat -> @+acc:Nat -> {Word.mul.go(n, m, w, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/word_arithmetic.encode(b, n), 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/word_arithmetic.encode(acc, n)) == 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/word_arithmetic.encode(Nat.add(acc, Nat.mul(Word.to_nat(m, w), b)), n) : Word(n)} stelliferous@0.0.2.0/proofs/word_power_of_two.bend put_into_zero @+width:Nat -> @+bit:Bool -> {Word.shl.put(width, bit, Word.zero(width)) == Bool.pick(Word(width), bit, power(width, 0n), Word.zero(width)) : Word(width)} stelliferous@0.0.2.0/proofs/word_power_of_two.bend shift_power @+width:Nat -> @+depth:Nat -> {Word.shl(width, power(width, depth)) == power(width, 1n+depth) : Word(width)} stelliferous@0.0.2.0/proofs/word_power_of_two.bend native_power @+depth:Nat -> {U32.shln(1, depth) == U32{power(32n, depth)} : U32} stelliferous@0.0.2.0/proofs/word_power_of_two.bend subtract_one @+width:Nat -> @+word:Word(width) -> {Word.sub(width, word, power(width, 0n)) == Word.adc(width, word, Word.zero(width), True{}, False{}) : Word(width)} stelliferous@0.0.2.0/proofs/word_power_of_two.bend zero_subtract_zero @+width:Nat -> {Word.adc(width, Word.zero(width), Word.zero(width), True{}, True{}) == Word.zero(width) : Word(width)} stelliferous@0.0.2.0/proofs/word_power_of_two.bend decrement_power @+width:Nat -> @+depth:Nat -> {Word.adc(width, power(width, depth), Word.zero(width), True{}, False{}) == mask(width, depth) : Word(width)} stelliferous@0.0.2.0/proofs/word_power_of_two.bend mask_preserves_bounded @+width:Nat -> @+depth:Nat -> @+word:Word(width) -> @bound:{Cmp.is_lt(Word.cmp(width, word, power(width, depth))) == True{} : Bool} -> {Word.and(width, word, mask(width, depth)) == word : Word(width)} stelliferous@0.0.2.0/proofs/word_power_of_two.bend native_mask_preserves_bounded @+depth:Nat -> @+index:U32 -> @_:{U32.is_lt(index, U32.shln(1, depth)) == True{} : Bool} -> {U32.and(index, U32.sub(U32.shln(1, depth), 1)) == index : U32} stelliferous@0.0.2.0/proofs/word_power_of_two.bend compare_zero @+width:Nat -> {Word.cmp(width, Word.zero(width), Word.zero(width)) == EQ{} : Cmp} stelliferous@0.0.2.0/proofs/word_power_of_two.bend positive_power @+width:Nat -> @+depth:Nat -> @fits:{Nat.is_lt(depth, width) == True{} : Bool} -> {Word.cmp(width, Word.zero(width), power(width, depth)) == LT{} : Cmp} stelliferous@0.0.2.0/proofs/word_power_of_two.bend compare_equal_low_bits @+comparison:Cmp -> {Word.cmp.fin(False{}, False{}, comparison) == comparison : Cmp} stelliferous@0.0.2.0/proofs/word_power_of_two.bend power_monotone @+width:Nat -> @+lower:Nat -> @+upper:Nat -> @fits:{Nat.is_lt(upper, width) == True{} : Bool} -> @ordered:{Nat.is_le(lower, upper) == True{} : Bool} -> {Cmp.is_le(Word.cmp(width, power(width, lower), power(width, upper))) == True{} : Bool} stelliferous@0.0.2.0/proofs/word_power_of_two.bend power_value @+width:Nat -> @+depth:Nat -> @fits:{Nat.is_lt(depth, width) == True{} : Bool} -> {Word.to_nat(width, power(width, depth)) == 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/word_encoding.shift(depth, 1n) : Nat} stelliferous@0.0.2.0/proofs/word_power_of_two.bend pad_zero @+width:Nat -> {Word.shr.pad(width, Word.zero(width)) == Word.zero(1n+width) : Word(1n+width)} stelliferous@0.0.2.0/proofs/word_power_of_two.bend pad_power @+width:Nat -> @+depth:Nat -> @fits:{Nat.is_lt(depth, width) == True{} : Bool} -> {Word.shr.pad(width, power(width, depth)) == power(1n+width, depth) : Word(1n+width)} stelliferous@0.0.2.0/proofs/word_power_of_two.bend native_half_power @+depth:Nat -> @fits:{Nat.is_lt(depth, 31n) == True{} : Bool} -> {U32.shr(U32.shln(1, 1n+depth)) == U32.shln(1, depth) : U32} stelliferous@0.0.2.0/proofs/word_power_of_two.bend native_power_bound @+depth:Nat -> @bound:{Nat.is_le(depth, 31n) == True{} : Bool} -> {U32.is_le(U32.shln(1, depth), 2147483648) == True{} : Bool} stelliferous@0.0.2.0/proofs/word_subtraction.bend undo @+n:Nat -> @+a:Word(n) -> @+b:Word(n) -> @+f:Bool -> @+c:Bool -> {Word.adc(n, Word.adc(n, a, b, f, c), b, Bool.not(f), Bool.not(c)) == a : Word(n)} stelliferous@0.0.2.0/proofs/word_width.bend transport_cons @+source:Nat -> @+target:Nat -> @+bit:Bool -> @+tail:Word(source) -> @width:{source == target : Nat} -> {transport(1n+source, 1n+target, WCon{bit, tail}, Equal.cong(Nat, Nat, n => 1n+n, source, target, width)) == WCon{bit, transport(source, target, tail, width)} : Word(1n+target)}