policy|allowedBoundary=Classical.choice,Quot.sound,propext,verify_mono.oracle.f,verify_mono.oracle.h,verify_mono.oracle.h_msg,verify_mono.oracle.t_l,verify_mono.oracle.t_len|certModules=Proofs.ApexSpec,Proofs.ChainSpec,Proofs.ForsInnerSpec,Proofs.ForsOuterSpec,Proofs.HtSpec,Proofs.InputPrepSpec,Proofs.WotsSpec,Proofs.XmssSpec cert|fips205.chain_free_loop_eq|cone=Classical.choice,Quot.sound,propext,verify_mono.oracle.f|type=∀ {N : Aeneas.Std.Usize} (pk_seed : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (s : Nat) (start : Aeneas.Std.U32) (adrs : fips205.types.Adrs) (tmp : Aeneas.Std.Array.{0} Aeneas.Std.U8 N), @LT.lt.{0} Nat instLTNat (@HAdd.hAdd.{0, 0, 0} Nat Nat Nat (@instHAdd.{0} Nat instAddNat) (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.U32 start) s) (@HPow.hPow.{0, 0, 0} Nat Nat Nat (@instHPow.{0, 0} Nat Nat (@Monoid.toPow.{0} Nat Nat.instMonoid)) (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@OfNat.ofNat.{0} Nat (nat_lit 32) (instOfNatNat (nat_lit 32)))) → ∀ (stop : Aeneas.Std.U32), @Eq.{1} Nat (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.U32 stop) (@HAdd.hAdd.{0, 0, 0} Nat Nat Nat (@instHAdd.{0} Nat instAddNat) (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.U32 start) s) → @Eq.{1} (Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (@fips205.verify_mono.chain_free_loop N (@Aeneas.Std.core.ops.range.Range.mk.{0} Aeneas.Std.U32 start stop) pk_seed adrs tmp) (@fips205.chainFoldN N pk_seed adrs tmp start s) cert|fips205.wots_loop1_eq|cone=Classical.choice,Quot.sound,propext,verify_mono.oracle.f|type=∀ {LEN N : Aeneas.Std.Usize} (sig : fips205.types.WotsSig LEN N) (pk_seed : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (msg : Aeneas.Std.Array.{0} Aeneas.Std.U32 LEN) (s : Nat) (start : Aeneas.Std.Usize) (adrs : fips205.types.Adrs) (tmp : Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN), @LT.lt.{0} Nat instLTNat (@HAdd.hAdd.{0, 0, 0} Nat Nat Nat (@instHAdd.{0} Nat instAddNat) (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.Usize start) s) (@HPow.hPow.{0, 0, 0} Nat Nat Nat (@instHPow.{0, 0} Nat Nat (@Monoid.toPow.{0} Nat Nat.instMonoid)) (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) System.Platform.numBits) → ∀ (stop : Aeneas.Std.Usize), @Eq.{1} Nat (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.Usize stop) (@HAdd.hAdd.{0, 0, 0} Nat Nat Nat (@instHAdd.{0} Nat instAddNat) (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.Usize start) s) → @Eq.{1} (Aeneas.Std.Result.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN))) (@fips205.verify_mono.wots_pk_from_sig_free_loop1 LEN N (@Aeneas.Std.core.ops.range.Range.mk.{0} Aeneas.Std.Usize start stop) sig pk_seed adrs tmp msg) (@fips205.wotsChainFold LEN N sig pk_seed msg adrs tmp start s) cert|fips205.xmss_loop_eq|cone=Classical.choice,Quot.sound,propext,verify_mono.oracle.h|type=∀ {HP N : Aeneas.Std.Usize} (idx : Aeneas.Std.U32) (pk_seed : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (auth : Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) HP) (s : Nat) (start : Aeneas.Std.U32) (adrs : fips205.types.Adrs) (node : Aeneas.Std.Array.{0} Aeneas.Std.U8 N), @LT.lt.{0} Nat instLTNat (@HAdd.hAdd.{0, 0, 0} Nat Nat Nat (@instHAdd.{0} Nat instAddNat) (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.U32 start) s) (@HPow.hPow.{0, 0, 0} Nat Nat Nat (@instHPow.{0, 0} Nat Nat (@Monoid.toPow.{0} Nat Nat.instMonoid)) (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@OfNat.ofNat.{0} Nat (nat_lit 32) (instOfNatNat (nat_lit 32)))) → ∀ (stop : Aeneas.Std.U32), @Eq.{1} Nat (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.U32 stop) (@HAdd.hAdd.{0, 0, 0} Nat Nat Nat (@instHAdd.{0} Nat instAddNat) (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.U32 start) s) → @Eq.{1} (Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (@fips205.verify_mono.xmss_pk_from_sig_free_loop HP N (@Aeneas.Std.core.ops.range.Range.mk.{0} Aeneas.Std.U32 start stop) idx pk_seed adrs auth node) (@fips205.xmssFoldN HP N idx pk_seed auth adrs node start s) cert|fips205.ht_loop_eq|cone=Classical.choice,Quot.sound,propext,verify_mono.oracle.f,verify_mono.oracle.h,verify_mono.oracle.t_l|type=∀ {D HP LEN N : Aeneas.Std.Usize} (a : Aeneas.Std.Array.{0} (fips205.types.XmssSig HP LEN N) D) (pk_seed : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (hp32 : Aeneas.Std.U32) (s : Nat) (start : Aeneas.Std.U32) (idx_tree : Aeneas.Std.U64) (adrs : fips205.types.Adrs) (node : Aeneas.Std.Array.{0} Aeneas.Std.U8 N), @LT.lt.{0} Nat instLTNat (@HAdd.hAdd.{0, 0, 0} Nat Nat Nat (@instHAdd.{0} Nat instAddNat) (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.U32 start) s) (@HPow.hPow.{0, 0, 0} Nat Nat Nat (@instHPow.{0, 0} Nat Nat (@Monoid.toPow.{0} Nat Nat.instMonoid)) (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@OfNat.ofNat.{0} Nat (nat_lit 32) (instOfNatNat (nat_lit 32)))) → ∀ (stop : Aeneas.Std.U32), @Eq.{1} Nat (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.U32 stop) (@HAdd.hAdd.{0, 0, 0} Nat Nat Nat (@instHAdd.{0} Nat instAddNat) (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.U32 start) s) → @Eq.{1} (Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (@fips205.verify_mono.ht_verify_free_loop D HP LEN N (@Aeneas.Std.core.ops.range.Range.mk.{0} Aeneas.Std.U32 start stop) a pk_seed idx_tree hp32 adrs node) (@fips205.htFoldN D HP LEN N a pk_seed hp32 idx_tree adrs node start s) cert|fips205.fors_inner_loop_eq|cone=Classical.choice,Quot.sound,propext,verify_mono.oracle.h|type=∀ {A K N : Aeneas.Std.Usize} (pk_seed : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (indices : Aeneas.Std.Array.{0} Aeneas.Std.U32 K) (i : Aeneas.Std.U32) (auth : fips205.types.Auth A N) (s : Nat) (start : Aeneas.Std.U32) (adrs : fips205.types.Adrs) (node : Aeneas.Std.Array.{0} Aeneas.Std.U8 N), @LT.lt.{0} Nat instLTNat (@HAdd.hAdd.{0, 0, 0} Nat Nat Nat (@instHAdd.{0} Nat instAddNat) (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.U32 start) s) (@HPow.hPow.{0, 0, 0} Nat Nat Nat (@instHPow.{0, 0} Nat Nat (@Monoid.toPow.{0} Nat Nat.instMonoid)) (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@OfNat.ofNat.{0} Nat (nat_lit 32) (instOfNatNat (nat_lit 32)))) → ∀ (stop : Aeneas.Std.U32), @Eq.{1} Nat (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.U32 stop) (@HAdd.hAdd.{0, 0, 0} Nat Nat Nat (@instHAdd.{0} Nat instAddNat) (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.U32 start) s) → @Eq.{1} (Aeneas.Std.Result.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N))) (@fips205.verify_mono.fors_pk_from_sig_free_loop0_loop0 A K N (@Aeneas.Std.core.ops.range.Range.mk.{0} Aeneas.Std.U32 start stop) pk_seed adrs indices i node auth) (@fips205.forsInnerFold A K N pk_seed indices i auth adrs node start s) cert|fips205.fors_outer_loop_eq|cone=Classical.choice,Quot.sound,propext,verify_mono.oracle.f,verify_mono.oracle.h|type=∀ {A K N : Aeneas.Std.Usize} (sig_fors : fips205.types.ForsSig A K N) (pk_seed : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (a32 : Aeneas.Std.U32) (indices : Aeneas.Std.Array.{0} Aeneas.Std.U32 K) (s : Nat) (start : Aeneas.Std.U32) (adrs : fips205.types.Adrs) (root : Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K), @LT.lt.{0} Nat instLTNat (@HAdd.hAdd.{0, 0, 0} Nat Nat Nat (@instHAdd.{0} Nat instAddNat) (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.U32 start) s) (@HPow.hPow.{0, 0, 0} Nat Nat Nat (@instHPow.{0, 0} Nat Nat (@Monoid.toPow.{0} Nat Nat.instMonoid)) (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@OfNat.ofNat.{0} Nat (nat_lit 32) (instOfNatNat (nat_lit 32)))) → ∀ (stop : Aeneas.Std.U32), @Eq.{1} Nat (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.U32 stop) (@HAdd.hAdd.{0, 0, 0} Nat Nat Nat (@instHAdd.{0} Nat instAddNat) (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.U32 start) s) → @Eq.{1} (Aeneas.Std.Result.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K))) (@fips205.verify_mono.fors_pk_from_sig_free_loop0 A K N (@Aeneas.Std.core.ops.range.Range.mk.{0} Aeneas.Std.U32 start stop) sig_fors pk_seed a32 adrs indices root) (@fips205.forsOuterFold A K N sig_fors pk_seed a32 indices adrs root start s) cert|fips205.to_int_loop_eq|cone=Classical.choice,Quot.sound,propext|type=∀ (x : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (s : Nat) (start : Aeneas.Std.Usize) (total : Aeneas.Std.U64), @LT.lt.{0} Nat instLTNat (@HAdd.hAdd.{0, 0, 0} Nat Nat Nat (@instHAdd.{0} Nat instAddNat) (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.Usize start) s) (@HPow.hPow.{0, 0, 0} Nat Nat Nat (@instHPow.{0, 0} Nat Nat (@Monoid.toPow.{0} Nat Nat.instMonoid)) (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) System.Platform.numBits) → ∀ (stop : Aeneas.Std.Usize), @Eq.{1} Nat (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.Usize stop) (@HAdd.hAdd.{0, 0, 0} Nat Nat Nat (@instHAdd.{0} Nat instAddNat) (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.Usize start) s) → @Eq.{1} (Aeneas.Std.Result.{0} Aeneas.Std.U64) (fips205.helpers.to_int_loop (@Aeneas.Std.core.ops.range.Range.mk.{0} Aeneas.Std.Usize start stop) x total) (fips205.toIntFold x total start s) cert|fips205.to_byte_loop_eq|cone=Classical.choice,Quot.sound,propext|type=∀ (n : Aeneas.Std.U32) (k : Nat) (start : Aeneas.Std.U32) (s : Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) (total : Aeneas.Std.U32), @LT.lt.{0} Nat instLTNat (@HAdd.hAdd.{0, 0, 0} Nat Nat Nat (@instHAdd.{0} Nat instAddNat) (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.U32 start) k) (@HPow.hPow.{0, 0, 0} Nat Nat Nat (@instHPow.{0, 0} Nat Nat (@Monoid.toPow.{0} Nat Nat.instMonoid)) (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@OfNat.ofNat.{0} Nat (nat_lit 32) (instOfNatNat (nat_lit 32)))) → ∀ (stop : Aeneas.Std.U32), @Eq.{1} Nat (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.U32 stop) (@HAdd.hAdd.{0, 0, 0} Nat Nat Nat (@instHAdd.{0} Nat instAddNat) (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.U32 start) k) → @Eq.{1} (Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))))) (fips205.helpers.to_byte_loop (@Aeneas.Std.core.ops.range.Range.mk.{0} Aeneas.Std.U32 start stop) n s total) (fips205.toByteFold n s total start k) cert|fips205.wots_csum_loop_eq|cone=Classical.choice,Quot.sound,propext|type=∀ {LEN : Aeneas.Std.Usize} (msg : Aeneas.Std.Array.{0} Aeneas.Std.U32 LEN) (s : Nat) (start : Aeneas.Std.Usize) (csum : Aeneas.Std.U32), @LT.lt.{0} Nat instLTNat (@HAdd.hAdd.{0, 0, 0} Nat Nat Nat (@instHAdd.{0} Nat instAddNat) (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.Usize start) s) (@HPow.hPow.{0, 0, 0} Nat Nat Nat (@instHPow.{0, 0} Nat Nat (@Monoid.toPow.{0} Nat Nat.instMonoid)) (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) System.Platform.numBits) → ∀ (stop : Aeneas.Std.Usize), @Eq.{1} Nat (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.Usize stop) (@HAdd.hAdd.{0, 0, 0} Nat Nat Nat (@instHAdd.{0} Nat instAddNat) (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.Usize start) s) → @Eq.{1} (Aeneas.Std.Result.{0} Aeneas.Std.U32) (@fips205.verify_mono.wots_pk_from_sig_free_loop0 LEN (@Aeneas.Std.core.ops.range.Range.mk.{0} Aeneas.Std.Usize start stop) csum msg) (@fips205.wotsCsumFold LEN msg csum start s) cert|fips205.base2b_outer_loop_eq|cone=Classical.choice,Quot.sound,propext|type=∀ (x : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (b : Aeneas.Std.U32) (s : Nat) (start : Aeneas.Std.Usize) (baseb : Aeneas.Std.Slice.{0} Aeneas.Std.U32) (inn : Aeneas.Std.Usize) (bits total : Aeneas.Std.U32), @LT.lt.{0} Nat instLTNat (@HAdd.hAdd.{0, 0, 0} Nat Nat Nat (@instHAdd.{0} Nat instAddNat) (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.Usize start) s) (@HPow.hPow.{0, 0, 0} Nat Nat Nat (@instHPow.{0, 0} Nat Nat (@Monoid.toPow.{0} Nat Nat.instMonoid)) (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) System.Platform.numBits) → ∀ (stop : Aeneas.Std.Usize), @Eq.{1} Nat (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.Usize stop) (@HAdd.hAdd.{0, 0, 0} Nat Nat Nat (@instHAdd.{0} Nat instAddNat) (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.Usize start) s) → @Eq.{1} (Aeneas.Std.Result.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U32)) (fips205.helpers.base_2b_loop0 (@Aeneas.Std.core.ops.range.Range.mk.{0} Aeneas.Std.Usize start stop) x b baseb inn bits total) (fips205.base2bOuterFold x b baseb inn bits total start s) cert|fips205.slh_verify_128s_accepts_iff|cone=Classical.choice,Quot.sound,propext,verify_mono.oracle.f,verify_mono.oracle.h,verify_mono.oracle.h_msg,verify_mono.oracle.t_l,verify_mono.oracle.t_len|type=∀ (mprime : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (sig : fips205.types.SlhDsaSig (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 12) (instOfNatNat (nat_lit 12))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 12) (instOfNatNat (nat_lit 12))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 12) (instOfNatNat (nat_lit 12))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 12) (instOfNatNat (nat_lit 12))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 12) (instOfNatNat (nat_lit 12))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))) (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 7) (instOfNatNat (nat_lit 7))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 7) (instOfNatNat (nat_lit 7))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 7) (instOfNatNat (nat_lit 7))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 7) (instOfNatNat (nat_lit 7))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 7) (instOfNatNat (nat_lit 7))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))) (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 9) (instOfNatNat (nat_lit 9))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 9) (instOfNatNat (nat_lit 9))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 9) (instOfNatNat (nat_lit 9))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 9) (instOfNatNat (nat_lit 9))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 9) (instOfNatNat (nat_lit 9))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))) (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 14) (instOfNatNat (nat_lit 14))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 14) (instOfNatNat (nat_lit 14))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 14) (instOfNatNat (nat_lit 14))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 14) (instOfNatNat (nat_lit 14))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 14) (instOfNatNat (nat_lit 14))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))) (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 35) (instOfNatNat (nat_lit 35))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 35) (instOfNatNat (nat_lit 35))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 35) (instOfNatNat (nat_lit 35))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 35) (instOfNatNat (nat_lit 35))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 35) (instOfNatNat (nat_lit 35))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))) (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) (pk : fips205.types.SlhPublicKey (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))), @Eq.{1} (Aeneas.Std.Result.{0} Bool) (fips205.verify_mono.slh_verify_128s mprime sig pk) (@Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) Bool (@fips205.slhVerifyRoot (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 12) (instOfNatNat (nat_lit 12))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 12) (instOfNatNat (nat_lit 12))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 12) (instOfNatNat (nat_lit 12))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 12) (instOfNatNat (nat_lit 12))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 12) (instOfNatNat (nat_lit 12))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))) (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 7) (instOfNatNat (nat_lit 7))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 7) (instOfNatNat (nat_lit 7))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 7) (instOfNatNat (nat_lit 7))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 7) (instOfNatNat (nat_lit 7))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 7) (instOfNatNat (nat_lit 7))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))) (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 9) (instOfNatNat (nat_lit 9))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 9) (instOfNatNat (nat_lit 9))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 9) (instOfNatNat (nat_lit 9))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 9) (instOfNatNat (nat_lit 9))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 9) (instOfNatNat (nat_lit 9))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))) (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 14) (instOfNatNat (nat_lit 14))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 14) (instOfNatNat (nat_lit 14))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 14) (instOfNatNat (nat_lit 14))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 14) (instOfNatNat (nat_lit 14))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 14) (instOfNatNat (nat_lit 14))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))) (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 35) (instOfNatNat (nat_lit 35))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 35) (instOfNatNat (nat_lit 35))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 35) (instOfNatNat (nat_lit 35))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 35) (instOfNatNat (nat_lit 35))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 35) (instOfNatNat (nat_lit 35))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))) (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))) (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 63) (instOfNatNat (nat_lit 63))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 63) (instOfNatNat (nat_lit 63))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 63) (instOfNatNat (nat_lit 63))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 63) (instOfNatNat (nat_lit 63))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 63) (instOfNatNat (nat_lit 63))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))) (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 30) (instOfNatNat (nat_lit 30))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 30) (instOfNatNat (nat_lit 30))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 30) (instOfNatNat (nat_lit 30))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 30) (instOfNatNat (nat_lit 30))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 30) (instOfNatNat (nat_lit 30))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))) mprime sig pk) fun (root : Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) => @Aeneas.Std.Result.ok.{0} Bool (@Decidable.decide (@Eq.{1} (List.{0} Aeneas.Std.U8) (@Subtype.val.{1} (List.{0} Aeneas.Std.U8) (fun (l : List.{0} Aeneas.Std.U8) => @Eq.{1} Nat (@List.length.{0} Aeneas.Std.U8 l) (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.Usize (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))))) root) (@Subtype.val.{1} (List.{0} Aeneas.Std.U8) (fun (l : List.{0} Aeneas.Std.U8) => @Eq.{1} Nat (@List.length.{0} Aeneas.Std.U8 l) (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.Usize (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))))) (@fips205.types.SlhPublicKey.pk_root (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))) pk))) (@instDecidableEqList.{0} Aeneas.Std.U8 (Aeneas.Std.instDecidableEqUScalar_1 Aeneas.Std.UScalarTy.U8) (@Subtype.val.{1} (List.{0} Aeneas.Std.U8) (fun (l : List.{0} Aeneas.Std.U8) => @Eq.{1} Nat (@List.length.{0} Aeneas.Std.U8 l) (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.Usize (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))))) root) (@Subtype.val.{1} (List.{0} Aeneas.Std.U8) (fun (l : List.{0} Aeneas.Std.U8) => @Eq.{1} Nat (@List.length.{0} Aeneas.Std.U8 l) (@Aeneas.Std.UScalar.val Aeneas.Std.UScalarTy.Usize (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))))) (@fips205.types.SlhPublicKey.pk_root (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 16) (instOfNatNat (nat_lit 16))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))) pk))))) spec|fips205.base2bOuterFold|def|value=fun (x : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (b : Aeneas.Std.U32) (x_1 : Aeneas.Std.Slice.{0} Aeneas.Std.U32) (x_2 : Aeneas.Std.Usize) (x_3 x_4 : Aeneas.Std.U32) (x_5 : Aeneas.Std.Usize) (x_6 : Nat) => @Nat.brecOn.{1} (fun (x : Nat) => Aeneas.Std.Slice.{0} Aeneas.Std.U32 → Aeneas.Std.Usize → Aeneas.Std.U32 → Aeneas.Std.U32 → Aeneas.Std.Usize → Aeneas.Std.Result.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U32)) x_6 (fips205.base2bOuterFold._f x b) x_1 x_2 x_3 x_4 x_5 spec|fips205.base2bOuterFold._f|def|value=fun (x : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (b : Aeneas.Std.U32) (x_1 : Nat) (f : @Nat.below.{1} (fun (x : Nat) => Aeneas.Std.Slice.{0} Aeneas.Std.U32 → Aeneas.Std.Usize → Aeneas.Std.U32 → Aeneas.Std.U32 → Aeneas.Std.Usize → Aeneas.Std.Result.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U32)) x_1) (x_2 : Aeneas.Std.Slice.{0} Aeneas.Std.U32) (x_3 : Aeneas.Std.Usize) (x_4 x_5 : Aeneas.Std.U32) (x_6 : Aeneas.Std.Usize) => fips205.base2bOuterFold.match_1.{1} (fun (x : Aeneas.Std.Slice.{0} Aeneas.Std.U32) (x_7 : Aeneas.Std.Usize) (x_8 x_9 : Aeneas.Std.U32) (x_10 : Aeneas.Std.Usize) (x_11 : Nat) => @Nat.below.{1} (fun (x : Nat) => Aeneas.Std.Slice.{0} Aeneas.Std.U32 → Aeneas.Std.Usize → Aeneas.Std.U32 → Aeneas.Std.U32 → Aeneas.Std.Usize → Aeneas.Std.Result.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U32)) x_11 → Aeneas.Std.Result.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U32)) x_2 x_3 x_4 x_5 x_6 x_1 (fun (baseb : Aeneas.Std.Slice.{0} Aeneas.Std.U32) (x : Aeneas.Std.Usize) (x_7 x_8 : Aeneas.Std.U32) (x_9 : Aeneas.Std.Usize) (x_10 : @Nat.below.{1} (fun (x : Nat) => Aeneas.Std.Slice.{0} Aeneas.Std.U32 → Aeneas.Std.Usize → Aeneas.Std.U32 → Aeneas.Std.U32 → Aeneas.Std.Usize → Aeneas.Std.Result.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U32)) (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0)))) => @Aeneas.Std.Result.ok.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U32) baseb) (fun (baseb : Aeneas.Std.Slice.{0} Aeneas.Std.U32) (inn : Aeneas.Std.Usize) (bits total : Aeneas.Std.U32) (out : Aeneas.Std.Usize) (k : Nat) (x_7 : @Nat.below.{1} (fun (x : Nat) => Aeneas.Std.Slice.{0} Aeneas.Std.U32 → Aeneas.Std.Usize → Aeneas.Std.U32 → Aeneas.Std.U32 → Aeneas.Std.Usize → Aeneas.Std.Result.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U32)) (Nat.succ k)) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Prod.{0, 0} Aeneas.Std.Usize (Prod.{0, 0} Aeneas.Std.U32 Aeneas.Std.U32)) (Aeneas.Std.Slice.{0} Aeneas.Std.U32) (fips205.helpers.base_2b_loop0_loop0 x b inn bits total) (@Aeneas.Std.uncurry.{0, 0, 1} Aeneas.Std.Usize (Prod.{0, 0} Aeneas.Std.U32 Aeneas.Std.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U32)) fun (inn1 : Aeneas.Std.Usize) => @Aeneas.Std.uncurry.{0, 0, 1} Aeneas.Std.U32 Aeneas.Std.U32 (Aeneas.Std.Result.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U32)) fun (bits1 total1 : Aeneas.Std.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Slice.{0} Aeneas.Std.U32) (@HSub.hSub.{0, 0, 0} Aeneas.Std.U32 Aeneas.Std.U32 (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHSubUScalarResult Aeneas.Std.UScalarTy.U32) bits1 b) fun (bits2 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Slice.{0} Aeneas.Std.U32) (@HShiftRight.hShiftRight.{0, 0, 0} Aeneas.Std.U32 (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHShiftRightUScalarResult Aeneas.Std.UScalarTy.U32 Aeneas.Std.UScalarTy.U32) total1 bits2) fun (i : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Slice.{0} Aeneas.Std.U32) (@HSub.hSub.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) Aeneas.Std.U32 (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHSubUScalarResult Aeneas.Std.UScalarTy.U32) (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 32) (instOfNatNat (nat_lit 32))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 32) (instOfNatNat (nat_lit 32))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 32) (instOfNatNat (nat_lit 32))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 32) (instOfNatNat (nat_lit 32))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 32) (instOfNatNat (nat_lit 32))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))) b) fun (i1 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Slice.{0} Aeneas.Std.U32) (@HShiftRight.hShiftRight.{0, 0, 0} Aeneas.Std.U32 (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHShiftRightUScalarResult Aeneas.Std.UScalarTy.U32 Aeneas.Std.UScalarTy.U32) Aeneas.Std.core.num.U32.MAX i1) fun (i2 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Slice.{0} Aeneas.Std.U32) (@Aeneas.Std.lift.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (@HAnd.hAnd.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (@Aeneas.Std.instHAndUScalar Aeneas.Std.UScalarTy.U32) i i2)) fun (i3 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U32) (Aeneas.Std.Slice.{0} Aeneas.Std.U32) (@Aeneas.Std.Slice.update.{0} Aeneas.Std.U32 baseb out i3) fun (bb1 : Aeneas.Std.Slice.{0} Aeneas.Std.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Slice.{0} Aeneas.Std.U32) (@HAdd.hAdd.{0, 0, 0} Aeneas.Std.Usize (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize)) (@Aeneas.Std.instHAddUScalarResult Aeneas.Std.UScalarTy.Usize) out (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) fun (out' : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => x_7.1 bb1 inn1 bits2 total1 out')) f spec|fips205.base2bOuterFold.match_1|def|value=fun (motive : Aeneas.Std.Slice.{0} Aeneas.Std.U32 → Aeneas.Std.Usize → Aeneas.Std.U32 → Aeneas.Std.U32 → Aeneas.Std.Usize → Nat → Sort u_1) (x : Aeneas.Std.Slice.{0} Aeneas.Std.U32) (x_1 : Aeneas.Std.Usize) (x_2 x_3 : Aeneas.Std.U32) (x_4 : Aeneas.Std.Usize) (x_5 : Nat) (h_1 : (baseb : Aeneas.Std.Slice.{0} Aeneas.Std.U32) → (x : Aeneas.Std.Usize) → (x_6 x_7 : Aeneas.Std.U32) → (x_8 : Aeneas.Std.Usize) → motive baseb x x_6 x_7 x_8 (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0)))) (h_2 : (baseb : Aeneas.Std.Slice.{0} Aeneas.Std.U32) → (inn : Aeneas.Std.Usize) → (bits total : Aeneas.Std.U32) → (out : Aeneas.Std.Usize) → (k : Nat) → motive baseb inn bits total out (Nat.succ k)) => @Nat.casesOn.{u_1} (fun (x_6 : Nat) => motive x x_1 x_2 x_3 x_4 x_6) x_5 (h_1 x x_1 x_2 x_3 x_4) fun (n : Nat) => h_2 x x_1 x_2 x_3 x_4 n spec|fips205.chainFoldN|def|value=fun {N : Aeneas.Std.Usize} (pk_seed : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (x : fips205.types.Adrs) (x_1 : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (x_2 : Aeneas.Std.U32) (x_3 : Nat) => @Nat.brecOn.{1} (fun (x : Nat) => fips205.types.Adrs → Aeneas.Std.Array.{0} Aeneas.Std.U8 N → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) x_3 (@fips205.chainFoldN._f N pk_seed) x x_1 x_2 spec|fips205.chainFoldN._f|def|value=fun {N : Aeneas.Std.Usize} (pk_seed : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (x : Nat) (f : @Nat.below.{1} (fun (x : Nat) => fips205.types.Adrs → Aeneas.Std.Array.{0} Aeneas.Std.U8 N → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) x) (x_1 : fips205.types.Adrs) (x_2 : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (x_3 : Aeneas.Std.U32) => @fips205.chainFoldN.match_1.{1} N (fun (x : fips205.types.Adrs) (x_4 : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (x_5 : Aeneas.Std.U32) (x_6 : Nat) => @Nat.below.{1} (fun (x : Nat) => fips205.types.Adrs → Aeneas.Std.Array.{0} Aeneas.Std.U8 N → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) x_6 → Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) x_1 x_2 x_3 x (fun (x : fips205.types.Adrs) (tmp : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (x_4 : Aeneas.Std.U32) (x_5 : @Nat.below.{1} (fun (x : Nat) => fips205.types.Adrs → Aeneas.Std.Array.{0} Aeneas.Std.U8 N → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0)))) => @Aeneas.Std.Result.ok.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) tmp) (fun (adrs : fips205.types.Adrs) (tmp : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (start : Aeneas.Std.U32) (k : Nat) (x : @Nat.below.{1} (fun (x : Nat) => fips205.types.Adrs → Aeneas.Std.Array.{0} Aeneas.Std.U8 N → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (Nat.succ k)) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (fips205.helpers.Adrs.set_hash_address adrs start) fun (adrs1 : fips205.types.Adrs) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.lift.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (@Aeneas.Std.Array.to_slice.{0} Aeneas.Std.U8 N tmp)) fun (s : Aeneas.Std.Slice.{0} Aeneas.Std.U8) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (verify_mono.oracle.f N pk_seed adrs1 s) fun (tmp1 : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HAdd.hAdd.{0, 0, 0} Aeneas.Std.U32 (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHAddUScalarResult Aeneas.Std.UScalarTy.U32) start (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) fun (start1 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => x.1 adrs1 tmp1 start1) f spec|fips205.chainFoldN.match_1|def|value=fun {N : Aeneas.Std.Usize} (motive : fips205.types.Adrs → Aeneas.Std.Array.{0} Aeneas.Std.U8 N → Aeneas.Std.U32 → Nat → Sort u_1) (x : fips205.types.Adrs) (x_1 : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (x_2 : Aeneas.Std.U32) (x_3 : Nat) (h_1 : (x : fips205.types.Adrs) → (tmp : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) → (x_4 : Aeneas.Std.U32) → motive x tmp x_4 (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0)))) (h_2 : (adrs : fips205.types.Adrs) → (tmp : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) → (start : Aeneas.Std.U32) → (k : Nat) → motive adrs tmp start (Nat.succ k)) => @Nat.casesOn.{u_1} (fun (x_4 : Nat) => motive x x_1 x_2 x_4) x_3 (h_1 x x_1 x_2) fun (n : Nat) => h_2 x x_1 x_2 n spec|fips205.forsInnerFold|def|value=fun {A K N : Aeneas.Std.Usize} (pk_seed : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (indices : Aeneas.Std.Array.{0} Aeneas.Std.U32 K) (i : Aeneas.Std.U32) (auth : fips205.types.Auth A N) (x : fips205.types.Adrs) (x_1 : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (x_2 : Aeneas.Std.U32) (x_3 : Nat) => @Nat.brecOn.{1} (fun (x : Nat) => fips205.types.Adrs → Aeneas.Std.Array.{0} Aeneas.Std.U8 N → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N))) x_3 (@fips205.forsInnerFold._f A K N pk_seed indices i auth) x x_1 x_2 spec|fips205.forsInnerFold._f|def|value=fun {A K N : Aeneas.Std.Usize} (pk_seed : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (indices : Aeneas.Std.Array.{0} Aeneas.Std.U32 K) (i : Aeneas.Std.U32) (auth : fips205.types.Auth A N) (x : Nat) (f : @Nat.below.{1} (fun (x : Nat) => fips205.types.Adrs → Aeneas.Std.Array.{0} Aeneas.Std.U8 N → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N))) x) (x_1 : fips205.types.Adrs) (x_2 : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (x_3 : Aeneas.Std.U32) => @fips205.forsInnerFold.match_1.{1} N (fun (x : fips205.types.Adrs) (x_4 : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (x_5 : Aeneas.Std.U32) (x_6 : Nat) => @Nat.below.{1} (fun (x : Nat) => fips205.types.Adrs → Aeneas.Std.Array.{0} Aeneas.Std.U8 N → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N))) x_6 → Aeneas.Std.Result.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N))) x_1 x_2 x_3 x (fun (adrs : fips205.types.Adrs) (node : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (x : Aeneas.Std.U32) (x_4 : @Nat.below.{1} (fun (x : Nat) => fips205.types.Adrs → Aeneas.Std.Array.{0} Aeneas.Std.U8 N → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N))) (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0)))) => @Aeneas.Std.Result.ok.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (@Prod.mk.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) adrs node)) (fun (adrs : fips205.types.Adrs) (node : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (lvl : Aeneas.Std.U32) (s : Nat) (x : @Nat.below.{1} (fun (x : Nat) => fips205.types.Adrs → Aeneas.Std.Array.{0} Aeneas.Std.U8 N → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N))) (Nat.succ s)) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (@HAdd.hAdd.{0, 0, 0} Aeneas.Std.U32 (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHAddUScalarResult Aeneas.Std.UScalarTy.U32) lvl (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) fun (w : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} fips205.types.Adrs (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (fips205.helpers.Adrs.set_tree_height adrs w) fun (adrs1 : fips205.types.Adrs) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (@Aeneas.Std.lift.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (@Aeneas.Std.UScalar.cast Aeneas.Std.UScalarTy.U32 Aeneas.Std.UScalarTy.Usize i)) fun (i2 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} Aeneas.Std.U32 (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (@Aeneas.Std.Array.index_usize.{0} Aeneas.Std.U32 K indices i2) fun (i3 : Aeneas.Std.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (@HShiftRight.hShiftRight.{0, 0, 0} Aeneas.Std.U32 Aeneas.Std.U32 (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHShiftRightUScalarResult Aeneas.Std.UScalarTy.U32 Aeneas.Std.UScalarTy.U32) i3 lvl) fun (i4 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (@Aeneas.Std.lift.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (@HAnd.hAnd.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (@Aeneas.Std.instHAndUScalar Aeneas.Std.UScalarTy.U32) i4 (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))))) fun (i5 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @ite.{1} (Aeneas.Std.Result.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N))) (@Eq.{1} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) i5 (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) (Aeneas.Std.instDecidableEqUScalar_1 Aeneas.Std.UScalarTy.U32 i5 (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) (@Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Prod.{0, 0} Aeneas.Std.U32 fips205.types.Adrs) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (fips205.helpers.Adrs.get_tree_index adrs1) (@Aeneas.Std.uncurry.{0, 0, 1} Aeneas.Std.U32 fips205.types.Adrs (Aeneas.Std.Result.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N))) fun (i6 : Aeneas.Std.U32) (adrs2 : fips205.types.Adrs) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (@HDiv.hDiv.{0, 0, 0} Aeneas.Std.U32 (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHDivUScalarResult Aeneas.Std.UScalarTy.U32) i6 (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) fun (tmp : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} fips205.types.Adrs (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (fips205.helpers.Adrs.set_tree_index adrs2 tmp) fun (adrs3 : fips205.types.Adrs) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (@Aeneas.Std.lift.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (@Aeneas.Std.Array.to_slice.{0} Aeneas.Std.U8 N node)) fun (s0 : Aeneas.Std.Slice.{0} Aeneas.Std.U8) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (@Aeneas.Std.lift.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (@Aeneas.Std.UScalar.cast Aeneas.Std.UScalarTy.U32 Aeneas.Std.UScalarTy.Usize lvl)) fun (i7 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (@Aeneas.Std.Array.index_usize.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) A (@fips205.types.Auth.tree A N auth) i7) fun (a : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (@Aeneas.Std.lift.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (@Aeneas.Std.Array.to_slice.{0} Aeneas.Std.U8 N a)) fun (s1 : Aeneas.Std.Slice.{0} Aeneas.Std.U8) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (verify_mono.oracle.h N pk_seed adrs3 s0 s1) fun (node1 : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) => x.1 adrs3 node1 w)) (@Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Prod.{0, 0} Aeneas.Std.U32 fips205.types.Adrs) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (fips205.helpers.Adrs.get_tree_index adrs1) (@Aeneas.Std.uncurry.{0, 0, 1} Aeneas.Std.U32 fips205.types.Adrs (Aeneas.Std.Result.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N))) fun (i6 : Aeneas.Std.U32) (adrs2 : fips205.types.Adrs) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (@HSub.hSub.{0, 0, 0} Aeneas.Std.U32 (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHSubUScalarResult Aeneas.Std.UScalarTy.U32) i6 (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) fun (i7 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (@HDiv.hDiv.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHDivUScalarResult Aeneas.Std.UScalarTy.U32) i7 (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) fun (tmp : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} fips205.types.Adrs (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (fips205.helpers.Adrs.set_tree_index adrs2 tmp) fun (adrs3 : fips205.types.Adrs) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (@Aeneas.Std.lift.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (@Aeneas.Std.UScalar.cast Aeneas.Std.UScalarTy.U32 Aeneas.Std.UScalarTy.Usize lvl)) fun (i8 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (@Aeneas.Std.Array.index_usize.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) A (@fips205.types.Auth.tree A N auth) i8) fun (a : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (@Aeneas.Std.lift.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (@Aeneas.Std.Array.to_slice.{0} Aeneas.Std.U8 N a)) fun (s0 : Aeneas.Std.Slice.{0} Aeneas.Std.U8) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (@Aeneas.Std.lift.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (@Aeneas.Std.Array.to_slice.{0} Aeneas.Std.U8 N node)) fun (s1 : Aeneas.Std.Slice.{0} Aeneas.Std.U8) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (verify_mono.oracle.h N pk_seed adrs3 s0 s1) fun (node1 : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) => x.1 adrs3 node1 w))) f spec|fips205.forsInnerFold.match_1|def|value=fun {N : Aeneas.Std.Usize} (motive : fips205.types.Adrs → Aeneas.Std.Array.{0} Aeneas.Std.U8 N → Aeneas.Std.U32 → Nat → Sort u_1) (x : fips205.types.Adrs) (x_1 : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (x_2 : Aeneas.Std.U32) (x_3 : Nat) (h_1 : (adrs : fips205.types.Adrs) → (node : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) → (x : Aeneas.Std.U32) → motive adrs node x (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0)))) (h_2 : (adrs : fips205.types.Adrs) → (node : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) → (lvl : Aeneas.Std.U32) → (s : Nat) → motive adrs node lvl (Nat.succ s)) => @Nat.casesOn.{u_1} (fun (x_4 : Nat) => motive x x_1 x_2 x_4) x_3 (h_1 x x_1 x_2) fun (n : Nat) => h_2 x x_1 x_2 n spec|fips205.forsOuterFold|def|value=fun {A K N : Aeneas.Std.Usize} (sig_fors : fips205.types.ForsSig A K N) (pk_seed : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (a32 : Aeneas.Std.U32) (indices : Aeneas.Std.Array.{0} Aeneas.Std.U32 K) (x : fips205.types.Adrs) (x_1 : Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K) (x_2 : Aeneas.Std.U32) (x_3 : Nat) => @Nat.brecOn.{1} (fun (x : Nat) => fips205.types.Adrs → Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K))) x_3 (@fips205.forsOuterFold._f A K N sig_fors pk_seed a32 indices) x x_1 x_2 spec|fips205.forsOuterFold._f|def|value=fun {A K N : Aeneas.Std.Usize} (sig_fors : fips205.types.ForsSig A K N) (pk_seed : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (a32 : Aeneas.Std.U32) (indices : Aeneas.Std.Array.{0} Aeneas.Std.U32 K) (x : Nat) (f : @Nat.below.{1} (fun (x : Nat) => fips205.types.Adrs → Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K))) x) (x_1 : fips205.types.Adrs) (x_2 : Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K) (x_3 : Aeneas.Std.U32) => @fips205.forsOuterFold.match_1.{1} K N (fun (x : fips205.types.Adrs) (x_4 : Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K) (x_5 : Aeneas.Std.U32) (x_6 : Nat) => @Nat.below.{1} (fun (x : Nat) => fips205.types.Adrs → Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K))) x_6 → Aeneas.Std.Result.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K))) x_1 x_2 x_3 x (fun (adrs : fips205.types.Adrs) (root : Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K) (x : Aeneas.Std.U32) (x_4 : @Nat.below.{1} (fun (x : Nat) => fips205.types.Adrs → Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K))) (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0)))) => @Aeneas.Std.Result.ok.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K)) (@Prod.mk.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K) adrs root)) (fun (adrs : fips205.types.Adrs) (root : Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K) (i : Aeneas.Std.U32) (s : Nat) (x : @Nat.below.{1} (fun (x : Nat) => fips205.types.Adrs → Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K))) (Nat.succ s)) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K)) (@Aeneas.Std.lift.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (@Aeneas.Std.UScalar.cast Aeneas.Std.UScalarTy.U32 Aeneas.Std.UScalarTy.Usize i)) fun (i1 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K)) (@Aeneas.Std.Array.index_usize.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K (@fips205.types.ForsSig.private_key_value A K N sig_fors) i1) fun (sk : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} fips205.types.Adrs (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K)) (fips205.helpers.Adrs.set_tree_height adrs (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) fun (adrs1 : fips205.types.Adrs) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K)) (@HShiftLeft.hShiftLeft.{0, 0, 0} Aeneas.Std.U32 Aeneas.Std.U32 (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHShiftLeftUScalarResult Aeneas.Std.UScalarTy.U32 Aeneas.Std.UScalarTy.U32) i a32) fun (i2 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K)) (@Aeneas.Std.lift.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (@Aeneas.Std.UScalar.cast Aeneas.Std.UScalarTy.U32 Aeneas.Std.UScalarTy.Usize i)) fun (i3 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} Aeneas.Std.U32 (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K)) (@Aeneas.Std.Array.index_usize.{0} Aeneas.Std.U32 K indices i3) fun (i4 : Aeneas.Std.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K)) (@HAdd.hAdd.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) Aeneas.Std.U32 (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHAddUScalarResult Aeneas.Std.UScalarTy.U32) i2 i4) fun (i5 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} fips205.types.Adrs (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K)) (fips205.helpers.Adrs.set_tree_index adrs1 i5) fun (adrs2 : fips205.types.Adrs) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K)) (@Aeneas.Std.lift.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (@Aeneas.Std.Array.to_slice.{0} Aeneas.Std.U8 N sk)) fun (s0 : Aeneas.Std.Slice.{0} Aeneas.Std.U8) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K)) (verify_mono.oracle.f N pk_seed adrs2 s0) fun (node_0 : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K)) (@Aeneas.Std.lift.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (@Aeneas.Std.UScalar.cast Aeneas.Std.UScalarTy.U32 Aeneas.Std.UScalarTy.Usize i)) fun (i6 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (fips205.types.Auth A N) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K)) (@Aeneas.Std.Array.index_usize.{0} (fips205.types.Auth A N) K (@fips205.types.ForsSig.auth A K N sig_fors) i6) fun (a : fips205.types.Auth A N) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (fips205.types.Auth A N) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K)) (@fips205.types.Auth.Insts.CoreCloneClone.clone A N a) fun (auth : fips205.types.Auth A N) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K)) (@fips205.verify_mono.fors_pk_from_sig_free_loop0_loop0 A K N (@Aeneas.Std.core.ops.range.Range.mk.{0} Aeneas.Std.U32 (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))) a32) pk_seed adrs2 indices i node_0 auth) (@Aeneas.Std.uncurry.{0, 0, 1} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (Aeneas.Std.Result.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K))) fun (adrs3 : fips205.types.Adrs) (node_01 : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K)) (@Aeneas.Std.lift.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (@Aeneas.Std.UScalar.cast Aeneas.Std.UScalarTy.U32 Aeneas.Std.UScalarTy.Usize i)) fun (i7 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K)) (@Aeneas.Std.Array.update.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K root i7 node_01) fun (a1 : Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K)) (@HAdd.hAdd.{0, 0, 0} Aeneas.Std.U32 (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHAddUScalarResult Aeneas.Std.UScalarTy.U32) i (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) fun (w : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => x.1 adrs3 a1 w)) f spec|fips205.forsOuterFold.match_1|def|value=fun {K N : Aeneas.Std.Usize} (motive : fips205.types.Adrs → Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K → Aeneas.Std.U32 → Nat → Sort u_1) (x : fips205.types.Adrs) (x_1 : Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K) (x_2 : Aeneas.Std.U32) (x_3 : Nat) (h_1 : (adrs : fips205.types.Adrs) → (root : Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K) → (x : Aeneas.Std.U32) → motive adrs root x (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0)))) (h_2 : (adrs : fips205.types.Adrs) → (root : Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) K) → (i : Aeneas.Std.U32) → (s : Nat) → motive adrs root i (Nat.succ s)) => @Nat.casesOn.{u_1} (fun (x_4 : Nat) => motive x x_1 x_2 x_4) x_3 (h_1 x x_1 x_2) fun (n : Nat) => h_2 x x_1 x_2 n spec|fips205.htFoldN|def|value=fun {D HP LEN N : Aeneas.Std.Usize} (a : Aeneas.Std.Array.{0} (fips205.types.XmssSig HP LEN N) D) (pk_seed : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (hp32 : Aeneas.Std.U32) (x : Aeneas.Std.U64) (x_1 : fips205.types.Adrs) (x_2 : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (x_3 : Aeneas.Std.U32) (x_4 : Nat) => @Nat.brecOn.{1} (fun (x : Nat) => Aeneas.Std.U64 → fips205.types.Adrs → Aeneas.Std.Array.{0} Aeneas.Std.U8 N → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) x_4 (@fips205.htFoldN._f D HP LEN N a pk_seed hp32) x x_1 x_2 x_3 spec|fips205.htFoldN._f|def|value=fun {D HP LEN N : Aeneas.Std.Usize} (a : Aeneas.Std.Array.{0} (fips205.types.XmssSig HP LEN N) D) (pk_seed : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (hp32 : Aeneas.Std.U32) (x : Nat) (f : @Nat.below.{1} (fun (x : Nat) => Aeneas.Std.U64 → fips205.types.Adrs → Aeneas.Std.Array.{0} Aeneas.Std.U8 N → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) x) (x_1 : Aeneas.Std.U64) (x_2 : fips205.types.Adrs) (x_3 : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (x_4 : Aeneas.Std.U32) => @fips205.htFoldN.match_1.{1} N (fun (x : Aeneas.Std.U64) (x_5 : fips205.types.Adrs) (x_6 : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (x_7 : Aeneas.Std.U32) (x_8 : Nat) => @Nat.below.{1} (fun (x : Nat) => Aeneas.Std.U64 → fips205.types.Adrs → Aeneas.Std.Array.{0} Aeneas.Std.U8 N → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) x_8 → Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) x_1 x_2 x_3 x_4 x (fun (x : Aeneas.Std.U64) (x_5 : fips205.types.Adrs) (node : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (x_6 : Aeneas.Std.U32) (x_7 : @Nat.below.{1} (fun (x : Nat) => Aeneas.Std.U64 → fips205.types.Adrs → Aeneas.Std.Array.{0} Aeneas.Std.U8 N → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0)))) => @Aeneas.Std.Result.ok.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) node) (fun (idx_tree : Aeneas.Std.U64) (adrs : fips205.types.Adrs) (node : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (j : Aeneas.Std.U32) (s : Nat) (x : @Nat.below.{1} (fun (x : Nat) => Aeneas.Std.U64 → fips205.types.Adrs → Aeneas.Std.Array.{0} Aeneas.Std.U8 N → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (Nat.succ s)) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HShiftLeft.hShiftLeft.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) Aeneas.Std.U32 (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64)) (@Aeneas.Std.instHShiftLeftUScalarResult Aeneas.Std.UScalarTy.U64 Aeneas.Std.UScalarTy.U32) (Aeneas.Std.U64.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U64)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U64)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U64)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U64))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))) hp32) fun (i : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HSub.hSub.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64)) (@Aeneas.Std.instHSubUScalarResult Aeneas.Std.UScalarTy.U64) i (Aeneas.Std.U64.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U64)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U64)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U64)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U64))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) fun (i1 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.lift.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) (@HAnd.hAnd.{0, 0, 0} Aeneas.Std.U64 (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) (@Aeneas.Std.instHAndUScalar Aeneas.Std.UScalarTy.U64) idx_tree i1)) fun (i2 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.lift.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (@Aeneas.Std.UScalar.cast Aeneas.Std.UScalarTy.U64 Aeneas.Std.UScalarTy.U32 i2)) fun (idx_leaf : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HShiftRight.hShiftRight.{0, 0, 0} Aeneas.Std.U64 Aeneas.Std.U32 (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64)) (@Aeneas.Std.instHShiftRightUScalarResult Aeneas.Std.UScalarTy.U64 Aeneas.Std.UScalarTy.U32) idx_tree hp32) fun (idx_tree1 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (fips205.helpers.Adrs.set_layer_address adrs j) fun (adrs1 : fips205.types.Adrs) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (fips205.helpers.Adrs.set_tree_address adrs1 idx_tree1) fun (adrs2 : fips205.types.Adrs) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.lift.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (@Aeneas.Std.UScalar.cast Aeneas.Std.UScalarTy.U32 Aeneas.Std.UScalarTy.Usize j)) fun (i3 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (fips205.types.XmssSig HP LEN N) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.Array.index_usize.{0} (fips205.types.XmssSig HP LEN N) D a i3) fun (xs : fips205.types.XmssSig HP LEN N) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (fips205.types.XmssSig HP LEN N) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@fips205.types.XmssSig.Insts.CoreCloneClone.clone HP LEN N xs) fun (sig_tmp : fips205.types.XmssSig HP LEN N) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.lift.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (@Aeneas.Std.Array.to_slice.{0} Aeneas.Std.U8 N node)) fun (s0 : Aeneas.Std.Slice.{0} Aeneas.Std.U8) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@fips205.verify_mono.xmss_pk_from_sig_free HP LEN N idx_leaf sig_tmp s0 pk_seed adrs2) fun (node1 : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HAdd.hAdd.{0, 0, 0} Aeneas.Std.U32 (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHAddUScalarResult Aeneas.Std.UScalarTy.U32) j (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) fun (w : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => x.1 idx_tree1 adrs2 node1 w) f spec|fips205.htFoldN.match_1|def|value=fun {N : Aeneas.Std.Usize} (motive : Aeneas.Std.U64 → fips205.types.Adrs → Aeneas.Std.Array.{0} Aeneas.Std.U8 N → Aeneas.Std.U32 → Nat → Sort u_1) (x : Aeneas.Std.U64) (x_1 : fips205.types.Adrs) (x_2 : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (x_3 : Aeneas.Std.U32) (x_4 : Nat) (h_1 : (x : Aeneas.Std.U64) → (x_5 : fips205.types.Adrs) → (node : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) → (x_6 : Aeneas.Std.U32) → motive x x_5 node x_6 (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0)))) (h_2 : (idx_tree : Aeneas.Std.U64) → (adrs : fips205.types.Adrs) → (node : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) → (j : Aeneas.Std.U32) → (s : Nat) → motive idx_tree adrs node j (Nat.succ s)) => @Nat.casesOn.{u_1} (fun (x_5 : Nat) => motive x x_1 x_2 x_3 x_5) x_4 (h_1 x x_1 x_2 x_3) fun (n : Nat) => h_2 x x_1 x_2 x_3 n spec|fips205.htVerifyRoot|def|value=fun {D HP LEN N : Aeneas.Std.Usize} (m : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (sig_ht : fips205.types.HtSig D HP LEN N) (pk_seed : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (idx_tree : Aeneas.Std.U64) (idx_leaf : Aeneas.Std.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.lift.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (@Aeneas.Std.UScalar.cast Aeneas.Std.UScalarTy.Usize Aeneas.Std.UScalarTy.U32 D)) fun (d32 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.lift.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (@Aeneas.Std.UScalar.cast Aeneas.Std.UScalarTy.Usize Aeneas.Std.UScalarTy.U32 HP)) fun (hp32 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) fips205.types.Adrs.Insts.CoreDefaultDefault.default fun (adrs : fips205.types.Adrs) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (fips205.helpers.Adrs.set_tree_address adrs idx_tree) fun (adrs1 : fips205.types.Adrs) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (fips205.types.XmssSig HP LEN N) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.Array.index_usize.{0} (fips205.types.XmssSig HP LEN N) D (@fips205.types.HtSig.xmss_sigs D HP LEN N sig_ht) (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) fips205.htVerifyRoot._proof_1)) fun (xs : fips205.types.XmssSig HP LEN N) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (fips205.types.XmssSig HP LEN N) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@fips205.types.XmssSig.Insts.CoreCloneClone.clone HP LEN N xs) fun (sig_tmp : fips205.types.XmssSig HP LEN N) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@fips205.verify_mono.xmss_pk_from_sig_free HP LEN N idx_leaf sig_tmp m pk_seed adrs1) fun (node : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) => @fips205.verify_mono.ht_verify_free_loop D HP LEN N (@Aeneas.Std.core.ops.range.Range.mk.{0} Aeneas.Std.U32 (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) fips205.htVerifyRoot._proof_2) d32) (@fips205.types.HtSig.xmss_sigs D HP LEN N sig_ht) pk_seed idx_tree hp32 adrs1 node spec|fips205.htVerifyRoot._proof_1|prop|type=@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize) spec|fips205.htVerifyRoot._proof_2|prop|type=@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32) spec|fips205.slhVerifyRoot|def|value=fun {A D HP K LEN N : Aeneas.Std.Usize} (H M : Aeneas.Std.Usize) (mprime : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (sig : fips205.types.SlhDsaSig A D HP K LEN N) (pk : fips205.types.SlhPublicKey N) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.lift.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (@Aeneas.Std.UScalar.cast Aeneas.Std.UScalarTy.Usize Aeneas.Std.UScalarTy.U32 D)) fun (d32 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.lift.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (@Aeneas.Std.UScalar.cast Aeneas.Std.UScalarTy.Usize Aeneas.Std.UScalarTy.U32 H)) fun (h32 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) fips205.types.Adrs.Insts.CoreDefaultDefault.default fun (adrs : fips205.types.Adrs) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.lift.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (@Aeneas.Std.Array.to_slice.{0} Aeneas.Std.U8 N (@fips205.types.SlhDsaSig.randomness A D HP K LEN N sig))) fun (s : Aeneas.Std.Slice.{0} Aeneas.Std.U8) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.lift.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (@Aeneas.Std.Array.to_slice.{0} Aeneas.Std.U8 N (@fips205.types.SlhPublicKey.pk_seed N pk))) fun (s1 : Aeneas.Std.Slice.{0} Aeneas.Std.U8) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.lift.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (@Aeneas.Std.Array.to_slice.{0} Aeneas.Std.U8 N (@fips205.types.SlhPublicKey.pk_root N pk))) fun (s2 : Aeneas.Std.Slice.{0} Aeneas.Std.U8) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 M) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (verify_mono.oracle.h_msg M s s1 s2 mprime) fun (digest : Aeneas.Std.Array.{0} Aeneas.Std.U8 M) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HMul.hMul.{0, 0, 0} Aeneas.Std.Usize Aeneas.Std.Usize (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize)) (@Aeneas.Std.instHMulUScalarResult Aeneas.Std.UScalarTy.Usize) K A) fun (i : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HAdd.hAdd.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize)) (@Aeneas.Std.instHAddUScalarResult Aeneas.Std.UScalarTy.Usize) i (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 7) (instOfNatNat (nat_lit 7))) fips205.slhVerifyRoot._proof_1)) fun (i1 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HDiv.hDiv.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize)) (@Aeneas.Std.instHDivUScalarResult Aeneas.Std.UScalarTy.Usize) i1 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 8) (instOfNatNat (nat_lit 8))) fips205.slhVerifyRoot._proof_2)) fun (index1 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.core.array.Array.index Aeneas.Std.U8 (Aeneas.Std.core.ops.range.Range.{0} Aeneas.Std.Usize) (Aeneas.Std.Slice.{0} Aeneas.Std.U8) M (@Aeneas.Std.core.ops.index.IndexSlice Aeneas.Std.U8 (Aeneas.Std.core.ops.range.Range.{0} Aeneas.Std.Usize) (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (Aeneas.Std.core.slice.index.SliceIndexRangeUsizeSlice Aeneas.Std.U8)) digest (@Aeneas.Std.core.ops.range.Range.mk.{0} Aeneas.Std.Usize (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) fips205.htVerifyRoot._proof_1) index1)) fun (md : Aeneas.Std.Slice.{0} Aeneas.Std.U8) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HDiv.hDiv.{0, 0, 0} Aeneas.Std.Usize Aeneas.Std.Usize (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize)) (@Aeneas.Std.instHDivUScalarResult Aeneas.Std.UScalarTy.Usize) H D) fun (i2 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HSub.hSub.{0, 0, 0} Aeneas.Std.Usize (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize)) (@Aeneas.Std.instHSubUScalarResult Aeneas.Std.UScalarTy.Usize) H i2) fun (i3 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HAdd.hAdd.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize)) (@Aeneas.Std.instHAddUScalarResult Aeneas.Std.UScalarTy.Usize) i3 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 7) (instOfNatNat (nat_lit 7))) fips205.slhVerifyRoot._proof_1)) fun (i4 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HDiv.hDiv.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize)) (@Aeneas.Std.instHDivUScalarResult Aeneas.Std.UScalarTy.Usize) i4 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 8) (instOfNatNat (nat_lit 8))) fips205.slhVerifyRoot._proof_2)) fun (i5 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HAdd.hAdd.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize)) (@Aeneas.Std.instHAddUScalarResult Aeneas.Std.UScalarTy.Usize) index1 i5) fun (index2 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.core.array.Array.index Aeneas.Std.U8 (Aeneas.Std.core.ops.range.Range.{0} Aeneas.Std.Usize) (Aeneas.Std.Slice.{0} Aeneas.Std.U8) M (@Aeneas.Std.core.ops.index.IndexSlice Aeneas.Std.U8 (Aeneas.Std.core.ops.range.Range.{0} Aeneas.Std.Usize) (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (Aeneas.Std.core.slice.index.SliceIndexRangeUsizeSlice Aeneas.Std.U8)) digest (@Aeneas.Std.core.ops.range.Range.mk.{0} Aeneas.Std.Usize index1 index2)) fun (tmp_idx_tree : Aeneas.Std.Slice.{0} Aeneas.Std.U8) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HMul.hMul.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) Aeneas.Std.Usize (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize)) (@Aeneas.Std.instHMulUScalarResult Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 8) (instOfNatNat (nat_lit 8))) fips205.slhVerifyRoot._proof_2) D) fun (i6 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HAdd.hAdd.{0, 0, 0} Aeneas.Std.Usize (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize)) (@Aeneas.Std.instHAddUScalarResult Aeneas.Std.UScalarTy.Usize) H i6) fun (i7 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HSub.hSub.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize)) (@Aeneas.Std.instHSubUScalarResult Aeneas.Std.UScalarTy.Usize) i7 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) fips205.slhVerifyRoot._proof_3)) fun (i8 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HDiv.hDiv.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize)) (@Aeneas.Std.instHDivUScalarResult Aeneas.Std.UScalarTy.Usize) i8 i6) fun (i9 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HAdd.hAdd.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize)) (@Aeneas.Std.instHAddUScalarResult Aeneas.Std.UScalarTy.Usize) index2 i9) fun (index3 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.core.array.Array.index Aeneas.Std.U8 (Aeneas.Std.core.ops.range.Range.{0} Aeneas.Std.Usize) (Aeneas.Std.Slice.{0} Aeneas.Std.U8) M (@Aeneas.Std.core.ops.index.IndexSlice Aeneas.Std.U8 (Aeneas.Std.core.ops.range.Range.{0} Aeneas.Std.Usize) (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (Aeneas.Std.core.slice.index.SliceIndexRangeUsizeSlice Aeneas.Std.U8)) digest (@Aeneas.Std.core.ops.range.Range.mk.{0} Aeneas.Std.Usize index2 index3)) fun (tmp_idx_leaf : Aeneas.Std.Slice.{0} Aeneas.Std.U8) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HDiv.hDiv.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHDivUScalarResult Aeneas.Std.UScalarTy.U32) h32 d32) fun (i10 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HSub.hSub.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHSubUScalarResult Aeneas.Std.UScalarTy.U32) h32 i10) fun (i11 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HAdd.hAdd.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHAddUScalarResult Aeneas.Std.UScalarTy.U32) i11 (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 7) (instOfNatNat (nat_lit 7))) fips205.slhVerifyRoot._proof_4)) fun (i12 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HDiv.hDiv.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHDivUScalarResult Aeneas.Std.UScalarTy.U32) i12 (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 8) (instOfNatNat (nat_lit 8))) fips205.slhVerifyRoot._proof_5)) fun (i13 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} Aeneas.Std.U64 (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (fips205.helpers.to_int tmp_idx_tree i13) fun (i14 : Aeneas.Std.U64) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HSub.hSub.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHSubUScalarResult Aeneas.Std.UScalarTy.U32) h32 i10) fun (i15 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HSub.hSub.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHSubUScalarResult Aeneas.Std.UScalarTy.U32) (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 64) (instOfNatNat (nat_lit 64))) fips205.slhVerifyRoot._proof_6) i15) fun (i16 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HShiftRight.hShiftRight.{0, 0, 0} Aeneas.Std.U64 (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64)) (@Aeneas.Std.instHShiftRightUScalarResult Aeneas.Std.UScalarTy.U64 Aeneas.Std.UScalarTy.U32) Aeneas.Std.core.num.U64.MAX i16) fun (i17 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.lift.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) (@HAnd.hAnd.{0, 0, 0} Aeneas.Std.U64 (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) (@Aeneas.Std.instHAndUScalar Aeneas.Std.UScalarTy.U64) i14 i17)) fun (idx_tree : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HMul.hMul.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHMulUScalarResult Aeneas.Std.UScalarTy.U32) (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 8) (instOfNatNat (nat_lit 8))) fips205.slhVerifyRoot._proof_5) d32) fun (i18 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HAdd.hAdd.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHAddUScalarResult Aeneas.Std.UScalarTy.U32) h32 i18) fun (i19 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HSub.hSub.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHSubUScalarResult Aeneas.Std.UScalarTy.U32) i19 (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) fips205.htVerifyRoot._proof_2)) fun (i20 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HDiv.hDiv.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHDivUScalarResult Aeneas.Std.UScalarTy.U32) i20 i18) fun (i21 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} Aeneas.Std.U64 (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (fips205.helpers.to_int tmp_idx_leaf i21) fun (i22 : Aeneas.Std.U64) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HSub.hSub.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHSubUScalarResult Aeneas.Std.UScalarTy.U32) (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 64) (instOfNatNat (nat_lit 64))) fips205.slhVerifyRoot._proof_6) i10) fun (i23 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HShiftRight.hShiftRight.{0, 0, 0} Aeneas.Std.U64 (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64)) (@Aeneas.Std.instHShiftRightUScalarResult Aeneas.Std.UScalarTy.U64 Aeneas.Std.UScalarTy.U32) Aeneas.Std.core.num.U64.MAX i23) fun (i24 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.lift.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) (@HAnd.hAnd.{0, 0, 0} Aeneas.Std.U64 (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) (@Aeneas.Std.instHAndUScalar Aeneas.Std.UScalarTy.U64) i22 i24)) fun (idx_leaf : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (fips205.helpers.Adrs.set_tree_address adrs idx_tree) fun (adrs1 : fips205.types.Adrs) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (fips205.helpers.Adrs.set_type_and_clear adrs1 fips205.types.FORS_TREE) fun (adrs2 : fips205.types.Adrs) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.lift.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (@Aeneas.Std.UScalar.cast Aeneas.Std.UScalarTy.U64 Aeneas.Std.UScalarTy.U32 idx_leaf)) fun (idx_leaf_u32 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (fips205.helpers.Adrs.set_key_pair_address adrs2 idx_leaf_u32) fun (adrs3 : fips205.types.Adrs) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.lift.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (@Aeneas.Std.Array.to_slice.{0} Aeneas.Std.U8 N (@fips205.types.SlhPublicKey.pk_seed N pk))) fun (s3 : Aeneas.Std.Slice.{0} Aeneas.Std.U8) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (fips205.types.ForsPk N) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@fips205.verify_mono.fors_pk_from_sig_free A K N (@fips205.types.SlhDsaSig.fors_sig A D HP K LEN N sig) md s3 adrs3) fun (pk_fors : fips205.types.ForsPk N) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.lift.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (@Aeneas.Std.Array.to_slice.{0} Aeneas.Std.U8 N (@fips205.types.ForsPk.key N pk_fors))) fun (s4 : Aeneas.Std.Slice.{0} Aeneas.Std.U8) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.lift.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (@Aeneas.Std.Array.to_slice.{0} Aeneas.Std.U8 N (@fips205.types.SlhPublicKey.pk_seed N pk))) fun (s5 : Aeneas.Std.Slice.{0} Aeneas.Std.U8) => @fips205.htVerifyRoot D HP LEN N s4 (@fips205.types.SlhDsaSig.ht_sig A D HP K LEN N sig) s5 idx_tree idx_leaf_u32 spec|fips205.slhVerifyRoot._proof_1|prop|type=@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 7) (instOfNatNat (nat_lit 7))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize) spec|fips205.slhVerifyRoot._proof_2|prop|type=@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 8) (instOfNatNat (nat_lit 8))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize) spec|fips205.slhVerifyRoot._proof_3|prop|type=@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize) spec|fips205.slhVerifyRoot._proof_4|prop|type=@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 7) (instOfNatNat (nat_lit 7))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32) spec|fips205.slhVerifyRoot._proof_5|prop|type=@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 8) (instOfNatNat (nat_lit 8))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32) spec|fips205.slhVerifyRoot._proof_6|prop|type=@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 64) (instOfNatNat (nat_lit 64))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32) spec|fips205.toByteFold|def|value=fun (n : Aeneas.Std.U32) (x : Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) fips205.toByteFold._proof_1)) (x_1 x_2 : Aeneas.Std.U32) (x_3 : Nat) => @Nat.brecOn.{1} (fun (x : Nat) => Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) fips205.toByteFold._proof_1) → Aeneas.Std.U32 → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) fips205.toByteFold._proof_1))) x_3 (fips205.toByteFold._f n) x x_1 x_2 spec|fips205.toByteFold._f|def|value=fun (n : Aeneas.Std.U32) (x : Nat) (f : @Nat.below.{1} (fun (x : Nat) => Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))) → Aeneas.Std.U32 → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))))) x) (x_1 : Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) (x_2 x_3 : Aeneas.Std.U32) => fips205.toByteFold.match_1.{1} (fun (x : Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) (x_4 x_5 : Aeneas.Std.U32) (x_6 : Nat) => @Nat.below.{1} (fun (x : Nat) => Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))) → Aeneas.Std.U32 → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))))) x_6 → Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))))) x_1 x_2 x_3 x (fun (s : Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) (x x_4 : Aeneas.Std.U32) (x_5 : @Nat.below.{1} (fun (x : Nat) => Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))) → Aeneas.Std.U32 → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))))) (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0)))) => @Aeneas.Std.Result.ok.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) s) (fun (s : Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) (total i : Aeneas.Std.U32) (k : Nat) (x : @Nat.below.{1} (fun (x : Nat) => Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))) → Aeneas.Std.U32 → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))))) (Nat.succ k)) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 4) (instOfNatNat (nat_lit 4))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 4) (instOfNatNat (nat_lit 4))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 4) (instOfNatNat (nat_lit 4))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 4) (instOfNatNat (nat_lit 4))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 4) (instOfNatNat (nat_lit 4))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) (Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) (@Aeneas.Std.lift.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 4) (instOfNatNat (nat_lit 4))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 4) (instOfNatNat (nat_lit 4))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 4) (instOfNatNat (nat_lit 4))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 4) (instOfNatNat (nat_lit 4))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 4) (instOfNatNat (nat_lit 4))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) (Aeneas.Std.core.num.U32.to_le_bytes total)) fun (a : Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 4) (instOfNatNat (nat_lit 4))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 4) (instOfNatNat (nat_lit 4))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 4) (instOfNatNat (nat_lit 4))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 4) (instOfNatNat (nat_lit 4))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 4) (instOfNatNat (nat_lit 4))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} Aeneas.Std.U8 (Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) (@Aeneas.Std.Array.index_usize.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 4) (instOfNatNat (nat_lit 4))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 4) (instOfNatNat (nat_lit 4))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 4) (instOfNatNat (nat_lit 4))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 4) (instOfNatNat (nat_lit 4))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 4) (instOfNatNat (nat_lit 4))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))) a (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) fun (i1 : Aeneas.Std.U8) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) (@HSub.hSub.{0, 0, 0} Aeneas.Std.U32 (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHSubUScalarResult Aeneas.Std.UScalarTy.U32) n (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) fun (i2 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) (@HSub.hSub.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) Aeneas.Std.U32 (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHSubUScalarResult Aeneas.Std.UScalarTy.U32) i2 i) fun (i3 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) (@Aeneas.Std.lift.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (@Aeneas.Std.UScalar.cast Aeneas.Std.UScalarTy.U32 Aeneas.Std.UScalarTy.Usize i3)) fun (i4 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) (Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) (@Aeneas.Std.Array.update.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))) s i4 i1) fun (a1 : Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) (@HShiftRight.hShiftRight.{0, 0, 0} Aeneas.Std.U32 (Aeneas.Std.IScalar Aeneas.Std.IScalarTy.I32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHShiftRightUScalarIScalarResult Aeneas.Std.UScalarTy.U32 Aeneas.Std.IScalarTy.I32) total (Aeneas.Std.I32.ofInt (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8))) (@of_decide_eq_true (And (@LE.le.{0} Int Int.instLEInt (Aeneas.Std.IScalar.cMin Aeneas.Std.IScalarTy.I32) (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8)))) (@LE.le.{0} Int Int.instLEInt (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8))) (Aeneas.Std.IScalar.cMax Aeneas.Std.IScalarTy.I32))) (@instDecidableAnd (@LE.le.{0} Int Int.instLEInt (Aeneas.Std.IScalar.cMin Aeneas.Std.IScalarTy.I32) (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8)))) (@LE.le.{0} Int Int.instLEInt (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8))) (Aeneas.Std.IScalar.cMax Aeneas.Std.IScalarTy.I32)) (Int.decLe (Aeneas.Std.IScalar.cMin Aeneas.Std.IScalarTy.I32) (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8)))) (Int.decLe (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8))) (Aeneas.Std.IScalar.cMax Aeneas.Std.IScalarTy.I32))) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (And (@LE.le.{0} Int Int.instLEInt (Aeneas.Std.IScalar.cMin Aeneas.Std.IScalarTy.I32) (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8)))) (@LE.le.{0} Int Int.instLEInt (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8))) (Aeneas.Std.IScalar.cMax Aeneas.Std.IScalarTy.I32))) (@instDecidableAnd (@LE.le.{0} Int Int.instLEInt (Aeneas.Std.IScalar.cMin Aeneas.Std.IScalarTy.I32) (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8)))) (@LE.le.{0} Int Int.instLEInt (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8))) (Aeneas.Std.IScalar.cMax Aeneas.Std.IScalarTy.I32)) (Int.decLe (Aeneas.Std.IScalar.cMin Aeneas.Std.IScalarTy.I32) (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8)))) (Int.decLe (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8))) (Aeneas.Std.IScalar.cMax Aeneas.Std.IScalarTy.I32)))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) fun (total1 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) (@HAdd.hAdd.{0, 0, 0} Aeneas.Std.U32 (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHAddUScalarResult Aeneas.Std.UScalarTy.U32) i (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) fun (i' : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => x.1 a1 total1 i') f spec|fips205.toByteFold._proof_1|prop|type=@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize) spec|fips205.toByteFold.match_1|def|value=fun (motive : Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))) → Aeneas.Std.U32 → Aeneas.Std.U32 → Nat → Sort u_1) (x : Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) (x_1 x_2 : Aeneas.Std.U32) (x_3 : Nat) (h_1 : (s : Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) → (x x_4 : Aeneas.Std.U32) → motive s x x_4 (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0)))) (h_2 : (s : Aeneas.Std.Array.{0} Aeneas.Std.U8 (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) → (total i : Aeneas.Std.U32) → (k : Nat) → motive s total i (Nat.succ k)) => @Nat.casesOn.{u_1} (fun (x_4 : Nat) => motive x x_1 x_2 x_4) x_3 (h_1 x x_1 x_2) fun (n : Nat) => h_2 x x_1 x_2 n spec|fips205.toIntFold|def|value=fun (x : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (x_1 : Aeneas.Std.U64) (x_2 : Aeneas.Std.Usize) (x_3 : Nat) => @Nat.brecOn.{1} (fun (x : Nat) => Aeneas.Std.U64 → Aeneas.Std.Usize → Aeneas.Std.Result.{0} Aeneas.Std.U64) x_3 (fips205.toIntFold._f x) x_1 x_2 spec|fips205.toIntFold._f|def|value=fun (x : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (x_1 : Nat) (f : @Nat.below.{1} (fun (x : Nat) => Aeneas.Std.U64 → Aeneas.Std.Usize → Aeneas.Std.Result.{0} Aeneas.Std.U64) x_1) (x_2 : Aeneas.Std.U64) (x_3 : Aeneas.Std.Usize) => fips205.toIntFold.match_1.{1} (fun (x : Aeneas.Std.U64) (x_4 : Aeneas.Std.Usize) (x_5 : Nat) => @Nat.below.{1} (fun (x : Nat) => Aeneas.Std.U64 → Aeneas.Std.Usize → Aeneas.Std.Result.{0} Aeneas.Std.U64) x_5 → Aeneas.Std.Result.{0} Aeneas.Std.U64) x_2 x_3 x_1 (fun (total : Aeneas.Std.U64) (x : Aeneas.Std.Usize) (x_4 : @Nat.below.{1} (fun (x : Nat) => Aeneas.Std.U64 → Aeneas.Std.Usize → Aeneas.Std.Result.{0} Aeneas.Std.U64) (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0)))) => @Aeneas.Std.Result.ok.{0} Aeneas.Std.U64 total) (fun (total : Aeneas.Std.U64) (i : Aeneas.Std.Usize) (s : Nat) (x_4 : @Nat.below.{1} (fun (x : Nat) => Aeneas.Std.U64 → Aeneas.Std.Usize → Aeneas.Std.Result.{0} Aeneas.Std.U64) (Nat.succ s)) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) Aeneas.Std.U64 (@HShiftLeft.hShiftLeft.{0, 0, 0} Aeneas.Std.U64 (Aeneas.Std.IScalar Aeneas.Std.IScalarTy.I32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64)) (@Aeneas.Std.instHShiftLeftUScalarIScalarResult Aeneas.Std.UScalarTy.U64 Aeneas.Std.IScalarTy.I32) total (Aeneas.Std.I32.ofInt (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8))) (@of_decide_eq_true (And (@LE.le.{0} Int Int.instLEInt (Aeneas.Std.IScalar.cMin Aeneas.Std.IScalarTy.I32) (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8)))) (@LE.le.{0} Int Int.instLEInt (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8))) (Aeneas.Std.IScalar.cMax Aeneas.Std.IScalarTy.I32))) (@instDecidableAnd (@LE.le.{0} Int Int.instLEInt (Aeneas.Std.IScalar.cMin Aeneas.Std.IScalarTy.I32) (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8)))) (@LE.le.{0} Int Int.instLEInt (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8))) (Aeneas.Std.IScalar.cMax Aeneas.Std.IScalarTy.I32)) (Int.decLe (Aeneas.Std.IScalar.cMin Aeneas.Std.IScalarTy.I32) (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8)))) (Int.decLe (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8))) (Aeneas.Std.IScalar.cMax Aeneas.Std.IScalarTy.I32))) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (And (@LE.le.{0} Int Int.instLEInt (Aeneas.Std.IScalar.cMin Aeneas.Std.IScalarTy.I32) (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8)))) (@LE.le.{0} Int Int.instLEInt (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8))) (Aeneas.Std.IScalar.cMax Aeneas.Std.IScalarTy.I32))) (@instDecidableAnd (@LE.le.{0} Int Int.instLEInt (Aeneas.Std.IScalar.cMin Aeneas.Std.IScalarTy.I32) (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8)))) (@LE.le.{0} Int Int.instLEInt (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8))) (Aeneas.Std.IScalar.cMax Aeneas.Std.IScalarTy.I32)) (Int.decLe (Aeneas.Std.IScalar.cMin Aeneas.Std.IScalarTy.I32) (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8)))) (Int.decLe (@OfNat.ofNat.{0} Int (nat_lit 8) (@instOfNat (nat_lit 8))) (Aeneas.Std.IScalar.cMax Aeneas.Std.IScalarTy.I32)))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) fun (i1 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} Aeneas.Std.U8 Aeneas.Std.U64 (@Aeneas.Std.Slice.index_usize.{0} Aeneas.Std.U8 x i) fun (i2 : Aeneas.Std.U8) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} Aeneas.Std.U64 Aeneas.Std.U64 (@Aeneas.Std.lift.{0} Aeneas.Std.U64 (Aeneas.Std.core.convert.num.FromU64U8.from i2)) fun (i3 : Aeneas.Std.U64) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) Aeneas.Std.U64 (@HAdd.hAdd.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) Aeneas.Std.U64 (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64)) (@Aeneas.Std.instHAddUScalarResult Aeneas.Std.UScalarTy.U64) i1 i3) fun (total1 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U64) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) Aeneas.Std.U64 (@HAdd.hAdd.{0, 0, 0} Aeneas.Std.Usize (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize)) (@Aeneas.Std.instHAddUScalarResult Aeneas.Std.UScalarTy.Usize) i (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) fun (i' : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => x_4.1 total1 i') f spec|fips205.toIntFold.match_1|def|value=fun (motive : Aeneas.Std.U64 → Aeneas.Std.Usize → Nat → Sort u_1) (x : Aeneas.Std.U64) (x_1 : Aeneas.Std.Usize) (x_2 : Nat) (h_1 : (total : Aeneas.Std.U64) → (x : Aeneas.Std.Usize) → motive total x (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0)))) (h_2 : (total : Aeneas.Std.U64) → (i : Aeneas.Std.Usize) → (s : Nat) → motive total i (Nat.succ s)) => @Nat.casesOn.{u_1} (fun (x_3 : Nat) => motive x x_1 x_3) x_2 (h_1 x x_1) fun (n : Nat) => h_2 x x_1 n spec|fips205.wotsChainFold|def|value=fun {LEN N : Aeneas.Std.Usize} (sig : fips205.types.WotsSig LEN N) (pk_seed : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (msg : Aeneas.Std.Array.{0} Aeneas.Std.U32 LEN) (x : fips205.types.Adrs) (x_1 : Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN) (x_2 : Aeneas.Std.Usize) (x_3 : Nat) => @Nat.brecOn.{1} (fun (x : Nat) => fips205.types.Adrs → Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN → Aeneas.Std.Usize → Aeneas.Std.Result.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN))) x_3 (@fips205.wotsChainFold._f LEN N sig pk_seed msg) x x_1 x_2 spec|fips205.wotsChainFold._f|def|value=fun {LEN N : Aeneas.Std.Usize} (sig : fips205.types.WotsSig LEN N) (pk_seed : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (msg : Aeneas.Std.Array.{0} Aeneas.Std.U32 LEN) (x : Nat) (f : @Nat.below.{1} (fun (x : Nat) => fips205.types.Adrs → Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN → Aeneas.Std.Usize → Aeneas.Std.Result.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN))) x) (x_1 : fips205.types.Adrs) (x_2 : Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN) (x_3 : Aeneas.Std.Usize) => @fips205.wotsChainFold.match_1.{1} LEN N (fun (x : fips205.types.Adrs) (x_4 : Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN) (x_5 : Aeneas.Std.Usize) (x_6 : Nat) => @Nat.below.{1} (fun (x : Nat) => fips205.types.Adrs → Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN → Aeneas.Std.Usize → Aeneas.Std.Result.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN))) x_6 → Aeneas.Std.Result.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN))) x_1 x_2 x_3 x (fun (adrs : fips205.types.Adrs) (tmp : Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN) (x : Aeneas.Std.Usize) (x_4 : @Nat.below.{1} (fun (x : Nat) => fips205.types.Adrs → Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN → Aeneas.Std.Usize → Aeneas.Std.Result.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN))) (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0)))) => @Aeneas.Std.Result.ok.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN)) (@Prod.mk.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN) adrs tmp)) (fun (adrs : fips205.types.Adrs) (tmp : Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN) (i : Aeneas.Std.Usize) (k : Nat) (x : @Nat.below.{1} (fun (x : Nat) => fips205.types.Adrs → Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN → Aeneas.Std.Usize → Aeneas.Std.Result.{0} (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN))) (Nat.succ k)) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN)) (@Aeneas.Std.lift.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (@Aeneas.Std.UScalar.cast Aeneas.Std.UScalarTy.Usize Aeneas.Std.UScalarTy.U32 i)) fun (i1 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} fips205.types.Adrs (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN)) (fips205.helpers.Adrs.set_chain_address adrs i1) fun (adrs1 : fips205.types.Adrs) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN)) (@Aeneas.Std.Array.index_usize.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN (@fips205.types.WotsSig.data LEN N sig) i) fun (a : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} Aeneas.Std.U32 (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN)) (@Aeneas.Std.Array.index_usize.{0} Aeneas.Std.U32 LEN msg i) fun (i2 : Aeneas.Std.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN)) (@HSub.hSub.{0, 0, 0} Aeneas.Std.U32 (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHSubUScalarResult Aeneas.Std.UScalarTy.U32) fips205.W (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) fun (i3 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN)) (@HSub.hSub.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) Aeneas.Std.U32 (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHSubUScalarResult Aeneas.Std.UScalarTy.U32) i3 i2) fun (i4 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN)) (@fips205.verify_mono.chain_free N a i2 i4 pk_seed adrs1) fun (a1 : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN)) (@Aeneas.Std.Array.update.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN tmp i a1) fun (a2 : Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Prod.{0, 0} fips205.types.Adrs (Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN)) (@HAdd.hAdd.{0, 0, 0} Aeneas.Std.Usize (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize)) (@Aeneas.Std.instHAddUScalarResult Aeneas.Std.UScalarTy.Usize) i (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) fun (i' : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => x.1 adrs1 a2 i') f spec|fips205.wotsChainFold.match_1|def|value=fun {LEN N : Aeneas.Std.Usize} (motive : fips205.types.Adrs → Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN → Aeneas.Std.Usize → Nat → Sort u_1) (x : fips205.types.Adrs) (x_1 : Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN) (x_2 : Aeneas.Std.Usize) (x_3 : Nat) (h_1 : (adrs : fips205.types.Adrs) → (tmp : Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN) → (x : Aeneas.Std.Usize) → motive adrs tmp x (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0)))) (h_2 : (adrs : fips205.types.Adrs) → (tmp : Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) LEN) → (i : Aeneas.Std.Usize) → (k : Nat) → motive adrs tmp i (Nat.succ k)) => @Nat.casesOn.{u_1} (fun (x_4 : Nat) => motive x x_1 x_2 x_4) x_3 (h_1 x x_1 x_2) fun (n : Nat) => h_2 x x_1 x_2 n spec|fips205.wotsCsumFold|def|value=fun {LEN : Aeneas.Std.Usize} (msg : Aeneas.Std.Array.{0} Aeneas.Std.U32 LEN) (x : Aeneas.Std.U32) (x_1 : Aeneas.Std.Usize) (x_2 : Nat) => @Nat.brecOn.{1} (fun (x : Nat) => Aeneas.Std.U32 → Aeneas.Std.Usize → Aeneas.Std.Result.{0} Aeneas.Std.U32) x_2 (@fips205.wotsCsumFold._f LEN msg) x x_1 spec|fips205.wotsCsumFold._f|def|value=fun {LEN : Aeneas.Std.Usize} (msg : Aeneas.Std.Array.{0} Aeneas.Std.U32 LEN) (x : Nat) (f : @Nat.below.{1} (fun (x : Nat) => Aeneas.Std.U32 → Aeneas.Std.Usize → Aeneas.Std.Result.{0} Aeneas.Std.U32) x) (x_1 : Aeneas.Std.U32) (x_2 : Aeneas.Std.Usize) => fips205.wotsCsumFold.match_1.{1} (fun (x : Aeneas.Std.U32) (x_3 : Aeneas.Std.Usize) (x_4 : Nat) => @Nat.below.{1} (fun (x : Nat) => Aeneas.Std.U32 → Aeneas.Std.Usize → Aeneas.Std.Result.{0} Aeneas.Std.U32) x_4 → Aeneas.Std.Result.{0} Aeneas.Std.U32) x_1 x_2 x (fun (csum : Aeneas.Std.U32) (x : Aeneas.Std.Usize) (x_3 : @Nat.below.{1} (fun (x : Nat) => Aeneas.Std.U32 → Aeneas.Std.Usize → Aeneas.Std.Result.{0} Aeneas.Std.U32) (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0)))) => @Aeneas.Std.Result.ok.{0} Aeneas.Std.U32 csum) (fun (csum : Aeneas.Std.U32) (i : Aeneas.Std.Usize) (s : Nat) (x : @Nat.below.{1} (fun (x : Nat) => Aeneas.Std.U32 → Aeneas.Std.Usize → Aeneas.Std.Result.{0} Aeneas.Std.U32) (Nat.succ s)) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) Aeneas.Std.U32 (@HSub.hSub.{0, 0, 0} Aeneas.Std.U32 (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHSubUScalarResult Aeneas.Std.UScalarTy.U32) fips205.W (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) fun (i1 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} Aeneas.Std.U32 Aeneas.Std.U32 (@Aeneas.Std.Array.index_usize.{0} Aeneas.Std.U32 LEN msg i) fun (i2 : Aeneas.Std.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) Aeneas.Std.U32 (@HSub.hSub.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) Aeneas.Std.U32 (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHSubUScalarResult Aeneas.Std.UScalarTy.U32) i1 i2) fun (i3 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) Aeneas.Std.U32 (@HAdd.hAdd.{0, 0, 0} Aeneas.Std.U32 (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHAddUScalarResult Aeneas.Std.UScalarTy.U32) csum i3) fun (csum1 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) Aeneas.Std.U32 (@HAdd.hAdd.{0, 0, 0} Aeneas.Std.Usize (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize)) (@Aeneas.Std.instHAddUScalarResult Aeneas.Std.UScalarTy.Usize) i (Aeneas.Std.Usize.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.Usize))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) fun (i' : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => x.1 csum1 i') f spec|fips205.wotsCsumFold.match_1|def|value=fun (motive : Aeneas.Std.U32 → Aeneas.Std.Usize → Nat → Sort u_1) (x : Aeneas.Std.U32) (x_1 : Aeneas.Std.Usize) (x_2 : Nat) (h_1 : (csum : Aeneas.Std.U32) → (x : Aeneas.Std.Usize) → motive csum x (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0)))) (h_2 : (csum : Aeneas.Std.U32) → (i : Aeneas.Std.Usize) → (s : Nat) → motive csum i (Nat.succ s)) => @Nat.casesOn.{u_1} (fun (x_3 : Nat) => motive x x_1 x_3) x_2 (h_1 x x_1) fun (n : Nat) => h_2 x x_1 n spec|fips205.xmssFoldN|def|value=fun {HP N : Aeneas.Std.Usize} (idx : Aeneas.Std.U32) (pk_seed : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (auth : Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) HP) (x : fips205.types.Adrs) (x_1 : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (x_2 : Aeneas.Std.U32) (x_3 : Nat) => @Nat.brecOn.{1} (fun (x : Nat) => fips205.types.Adrs → Aeneas.Std.Array.{0} Aeneas.Std.U8 N → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) x_3 (@fips205.xmssFoldN._f HP N idx pk_seed auth) x x_1 x_2 spec|fips205.xmssFoldN._f|def|value=fun {HP N : Aeneas.Std.Usize} (idx : Aeneas.Std.U32) (pk_seed : Aeneas.Std.Slice.{0} Aeneas.Std.U8) (auth : Aeneas.Std.Array.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) HP) (x : Nat) (f : @Nat.below.{1} (fun (x : Nat) => fips205.types.Adrs → Aeneas.Std.Array.{0} Aeneas.Std.U8 N → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) x) (x_1 : fips205.types.Adrs) (x_2 : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (x_3 : Aeneas.Std.U32) => @fips205.xmssFoldN.match_1.{1} N (fun (x : fips205.types.Adrs) (x_4 : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (x_5 : Aeneas.Std.U32) (x_6 : Nat) => @Nat.below.{1} (fun (x : Nat) => fips205.types.Adrs → Aeneas.Std.Array.{0} Aeneas.Std.U8 N → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) x_6 → Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) x_1 x_2 x_3 x (fun (x : fips205.types.Adrs) (node : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (x_4 : Aeneas.Std.U32) (x_5 : @Nat.below.{1} (fun (x : Nat) => fips205.types.Adrs → Aeneas.Std.Array.{0} Aeneas.Std.U8 N → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0)))) => @Aeneas.Std.Result.ok.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) node) (fun (adrs : fips205.types.Adrs) (node : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (k : Aeneas.Std.U32) (s : Nat) (x : @Nat.below.{1} (fun (x : Nat) => fips205.types.Adrs → Aeneas.Std.Array.{0} Aeneas.Std.U8 N → Aeneas.Std.U32 → Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (Nat.succ s)) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HAdd.hAdd.{0, 0, 0} Aeneas.Std.U32 (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHAddUScalarResult Aeneas.Std.UScalarTy.U32) k (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) fun (w : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (fips205.helpers.Adrs.set_tree_height adrs w) fun (adrs1 : fips205.types.Adrs) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HShiftRight.hShiftRight.{0, 0, 0} Aeneas.Std.U32 Aeneas.Std.U32 (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHShiftRightUScalarResult Aeneas.Std.UScalarTy.U32 Aeneas.Std.UScalarTy.U32) idx k) fun (i1 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.lift.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (@HAnd.hAnd.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (@Aeneas.Std.instHAndUScalar Aeneas.Std.UScalarTy.U32) i1 (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32))) Bool.true) (@Eq.refl.{1} Bool Bool.true)))))) fun (i2 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @ite.{1} (Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) (@Eq.{1} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) i2 (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) (Aeneas.Std.instDecidableEqUScalar_1 Aeneas.Std.UScalarTy.U32 i2 (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) (@Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Prod.{0, 0} Aeneas.Std.U32 fips205.types.Adrs) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (fips205.helpers.Adrs.get_tree_index adrs1) (@Aeneas.Std.uncurry.{0, 0, 1} Aeneas.Std.U32 fips205.types.Adrs (Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) fun (i3 : Aeneas.Std.U32) (adrs2 : fips205.types.Adrs) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HDiv.hDiv.{0, 0, 0} Aeneas.Std.U32 (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHDivUScalarResult Aeneas.Std.UScalarTy.U32) i3 (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) fun (tmp : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (fips205.helpers.Adrs.set_tree_index adrs2 tmp) fun (adrs3 : fips205.types.Adrs) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.lift.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (@Aeneas.Std.Array.to_slice.{0} Aeneas.Std.U8 N node)) fun (s0 : Aeneas.Std.Slice.{0} Aeneas.Std.U8) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.lift.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (@Aeneas.Std.UScalar.cast Aeneas.Std.UScalarTy.U32 Aeneas.Std.UScalarTy.Usize k)) fun (i4 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.Array.index_usize.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) HP auth i4) fun (a : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.lift.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (@Aeneas.Std.Array.to_slice.{0} Aeneas.Std.U8 N a)) fun (s1 : Aeneas.Std.Slice.{0} Aeneas.Std.U8) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (verify_mono.oracle.h N pk_seed adrs3 s0 s1) fun (node1 : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) => x.1 adrs3 node1 w)) (@Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Prod.{0, 0} Aeneas.Std.U32 fips205.types.Adrs) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (fips205.helpers.Adrs.get_tree_index adrs1) (@Aeneas.Std.uncurry.{0, 0, 1} Aeneas.Std.U32 fips205.types.Adrs (Aeneas.Std.Result.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N)) fun (i3 : Aeneas.Std.U32) (adrs2 : fips205.types.Adrs) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HSub.hSub.{0, 0, 0} Aeneas.Std.U32 (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHSubUScalarResult Aeneas.Std.UScalarTy.U32) i3 (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) fun (i4 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@HDiv.hDiv.{0, 0, 0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) (Aeneas.Std.Result.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32)) (@Aeneas.Std.instHDivUScalarResult Aeneas.Std.UScalarTy.U32) i4 (Aeneas.Std.U32.ofNat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (@of_decide_eq_true (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (@id.{0} (@Eq.{1} Bool (@Decidable.decide (@LE.le.{0} Nat instLENat (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32)) (Nat.decLe (@OfNat.ofNat.{0} Nat (nat_lit 2) (instOfNatNat (nat_lit 2))) (Aeneas.Std.UScalar.cMax Aeneas.Std.UScalarTy.U32))) Bool.true) (@Eq.refl.{1} Bool Bool.true))))) fun (tmp : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.U32) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} fips205.types.Adrs (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (fips205.helpers.Adrs.set_tree_index adrs2 tmp) fun (adrs3 : fips205.types.Adrs) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.lift.{0} (Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) (@Aeneas.Std.UScalar.cast Aeneas.Std.UScalarTy.U32 Aeneas.Std.UScalarTy.Usize k)) fun (i5 : Aeneas.Std.UScalar Aeneas.Std.UScalarTy.Usize) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.Array.index_usize.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) HP auth i5) fun (a : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.lift.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (@Aeneas.Std.Array.to_slice.{0} Aeneas.Std.U8 N a)) fun (s0 : Aeneas.Std.Slice.{0} Aeneas.Std.U8) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (@Aeneas.Std.lift.{0} (Aeneas.Std.Slice.{0} Aeneas.Std.U8) (@Aeneas.Std.Array.to_slice.{0} Aeneas.Std.U8 N node)) fun (s1 : Aeneas.Std.Slice.{0} Aeneas.Std.U8) => @Bind.bind.{0, 0} Aeneas.Std.Result.{0} Aeneas.Std.instBindResult.{0} (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (verify_mono.oracle.h N pk_seed adrs3 s0 s1) fun (node1 : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) => x.1 adrs3 node1 w))) f spec|fips205.xmssFoldN.match_1|def|value=fun {N : Aeneas.Std.Usize} (motive : fips205.types.Adrs → Aeneas.Std.Array.{0} Aeneas.Std.U8 N → Aeneas.Std.U32 → Nat → Sort u_1) (x : fips205.types.Adrs) (x_1 : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) (x_2 : Aeneas.Std.U32) (x_3 : Nat) (h_1 : (x : fips205.types.Adrs) → (node : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) → (x_4 : Aeneas.Std.U32) → motive x node x_4 (@OfNat.ofNat.{0} Nat (nat_lit 0) (instOfNatNat (nat_lit 0)))) (h_2 : (adrs : fips205.types.Adrs) → (node : Aeneas.Std.Array.{0} Aeneas.Std.U8 N) → (k : Aeneas.Std.U32) → (s : Nat) → motive adrs node k (Nat.succ s)) => @Nat.casesOn.{u_1} (fun (x_4 : Nat) => motive x x_1 x_2 x_4) x_3 (h_1 x x_1 x_2) fun (n : Nat) => h_2 x x_1 x_2 n