def wsh.gf

bend-osdev-word64@0.1.1.0 · PROOF_text.bend:508

import bend-osdev-word64@0.1.1.0/PROOF_text.bend as PROOFText
import Base
import bend-osdev-u32@0.1.0.0/u32.bend as U
import bend-osdev-u32@0.1.0.0/LAWS.bend as UL

508# g(y) <= f(f(y)), and 2^13 y <= g(g(y))
509def wsh.gf(+y: Nat) -> {Nat.is_le(Nat.add(U.U32Nat.dbl(6n, y), U.U32Nat.dbl(5n, y)), Nat.add(U.U32Nat.dbl(3n, Nat.add(U.U32Nat.dbl(3n, y), U.U32Nat.dbl(1n, y))), U.U32Nat.dbl(1n, Nat.add(U.U32Nat.dbl(3n, y), U.U32Nat.dbl(1n, y))))) == True{} : Bool}:
510  Equal.trans(Bool, Nat.is_le(Nat.add(U.U32Nat.dbl(6n, y), U.U32Nat.dbl(5n, y)), Nat.add(U.U32Nat.dbl(3n, Nat.add(U.U32Nat.dbl(3n, y), U.U32Nat.dbl(1n, y))), U.U32Nat.dbl(1n, Nat.add(U.U32Nat.dbl(3n, y), U.U32Nat.dbl(1n, y))))), Nat.is_le(Nat.add(U.U32Nat.dbl(6n, y), U.U32Nat.dbl(5n, y)), Nat.add(U.U32Nat.dbl(2n, y), Nat.add(U.U32Nat.dbl(6n, y), U.U32Nat.dbl(5n, y)))), True{}, Equal.sym(Bool, Nat.is_le(Nat.add(U.U32Nat.dbl(6n, y), U.U32Nat.dbl(5n, y)), Nat.add(U.U32Nat.dbl(2n, y), Nat.add(U.U32Nat.dbl(6n, y), U.U32Nat.dbl(5n, y)))), Nat.is_le(Nat.add(U.U32Nat.dbl(6n, y), U.U32Nat.dbl(5n, y)), Nat.add(U.U32Nat.dbl(3n, Nat.add(U.U32Nat.dbl(3n, y), U.U32Nat.dbl(1n, y))), U.U32Nat.dbl(1n, Nat.add(U.U32Nat.dbl(3n, y), U.U32Nat.dbl(1n, y))))), Equal.cong(Nat, Bool, zz => Nat.is_le(Nat.add(U.U32Nat.dbl(6n, y), U.U32Nat.dbl(5n, y)), zz), Nat.add(U.U32Nat.dbl(2n, y), Nat.add(U.U32Nat.dbl(6n, y), U.U32Nat.dbl(5n, y))), Nat.add(U.U32Nat.dbl(3n, Nat.add(U.U32Nat.dbl(3n, y), U.U32Nat.dbl(1n, y))), U.U32Nat.dbl(1n, Nat.add(U.U32Nat.dbl(3n, y), U.U32Nat.dbl(1n, y)))), wr.t14(y))), UL.nat_le_add(Nat.add(U.U32Nat.dbl(6n, y), U.U32Nat.dbl(5n, y)), U.U32Nat.dbl(2n, y)))

Uses (10)

Used by (1)