def keypair_if_eq
bend-collections-laws-crypto@1.0.0.0 · proofs/crypto/ed25519/proof.bend:123
import bend-collections-laws-crypto@1.0.0.0/proofs/crypto/ed25519/proof.bend as Proof
import Base
import bend-collections-laws-crypto@1.0.0.0/src/crypto/ed25519/ed25519.bend as E
import bend-collections-laws-crypto@1.0.0.0/src/crypto/sign.bend as SG
import bend-collections-laws-crypto@1.0.0.0/proofs/lib/logic.bend as L
123def keypair_if_eq(+seed: List<&2, U32>, +ok: Bool, +pk: List<&2, U32>, +hok: {ok == True{} : Bool}, +e: {E.public_key(seed) == pk : List<&2, U32>}) -> {SG.keypair_if(seed, ok) == Some{SG.Keypair{seed, pk}} : Maybe<&2, SG.Keypair>}:
124 match ok:
125 case True{}:
126 Equal.cong(List<&2, U32>, Maybe<&2, SG.Keypair>, z => Some{SG.Keypair{seed, z}}, E.public_key(seed), pk, e)
127 case False{}:
128 Empty.absurd({SG.keypair_if(seed, False{}) == Some{SG.Keypair{seed, pk}} : Maybe<&2, SG.Keypair>}, L.true_false(Equal.sym(Bool, False{}, True{}, hok)))