-- THIS FILE WAS AUTOMATICALLY GENERATED BY AENEAS -- [curve25519_dalek]: function definitions import Aeneas import CurveField.Types import CurveField.FunsExternal open Aeneas Aeneas.Std Result ControlFlow Error set_option linter.dupNamespace false set_option linter.hashCommand false set_option linter.unusedVariables false /- You can set the `maxHeartbeats` value with the `-max-heartbeats` CLI option -/ set_option maxHeartbeats 1000000 /- You can set the `maxRecDepth` value with the `-max-recdepth` CLI option -/ set_option maxRecDepth 2048 /- You can remove the following line by using the CLI option `-all-computable`: -/ noncomputable section namespace curve25519_dalek /-- Trait implementation: [core::array::{impl core::fmt::Debug for [T; N]}] Source: '/rustc/library/core/src/array/mod.rs', lines 355:0-355:57 Name pattern: [core::fmt::Debug<[@T; @N]>] -/ @[reducible, rust_trait_impl "core::fmt::Debug<[@T; @N]>"] def Array.Insts.CoreFmtDebug {T : Type} (N : Std.Usize) (fmtDebugInst : core.fmt.Debug T) : core.fmt.Debug (Array T N) := { fmt := core.array.DebugArray.fmt fmtDebugInst } /-- Trait implementation: [core::fmt::{impl core::fmt::Debug for [T]}] Source: '/rustc/library/core/src/fmt/mod.rs', lines 3121:0-3121:28 Name pattern: [core::fmt::Debug<[@T]>] -/ @[reducible, rust_trait_impl "core::fmt::Debug<[@T]>"] def Slice.Insts.CoreFmtDebug {T : Type} (DebugInst : core.fmt.Debug T) : core.fmt.Debug (Slice T) := { fmt := Slice.Insts.CoreFmtDebug.fmt DebugInst } /-- Trait implementation: [core::hash::impls::{impl core::hash::Hash for u8}] Source: '/rustc/library/core/src/hash/mod.rs', lines 810:12-810:29 Name pattern: [core::hash::Hash] -/ @[reducible, rust_trait_impl "core::hash::Hash"] def U8.Insts.CoreHashHash : core.hash.Hash Std.U8 := { hash := fun {H : Type} (HasherInst : core.hash.Hasher H) => U8.Insts.CoreHashHash.hash HasherInst } /-- Trait implementation: [core::iter::range::{impl core::iter::range::Step for u32}] Source: '/rustc/library/core/src/iter/range.rs', lines 266:12-266:43 Name pattern: [core::iter::range::Step] -/ @[reducible, rust_trait_impl "core::iter::range::Step"] def U32.Insts.CoreIterRangeStep : core.iter.range.Step Std.U32 := { cloneInst := core.clone.CloneU32 partialOrdInst := core.cmp.PartialOrdU32 steps_between := U32.Insts.CoreIterRangeStep.steps_between forward_checked := U32.Insts.CoreIterRangeStep.forward_checked backward_checked := U32.Insts.CoreIterRangeStep.backward_checked } /-- Trait implementation: [core::slice::index::private_slice_index::{impl core::slice::index::private_slice_index::Sealed for core::ops::range::RangeFull}] Source: '/rustc/library/core/src/slice/index.rs', lines 120:4-120:34 Name pattern: [core::slice::index::private_slice_index::Sealed] -/ @[reducible, rust_trait_impl "core::slice::index::private_slice_index::Sealed"] def core.ops.range.RangeFull.Insts.CoreSliceIndexPrivate_slice_indexSealed : core.slice.index.private_slice_index.Sealed core.ops.range.RangeFull := { } /-- Trait implementation: [core::slice::index::{impl core::slice::index::SliceIndex<[T], [T]> for core::ops::range::RangeFull}] Source: '/rustc/library/core/src/slice/index.rs', lines 631:0-631:55 Name pattern: [core::slice::index::SliceIndex] -/ @[reducible, rust_trait_impl "core::slice::index::SliceIndex"] def core.ops.range.RangeFull.Insts.CoreSliceIndexSliceIndexSliceSlice (T : Type) : core.slice.index.SliceIndex core.ops.range.RangeFull (Slice T) (Slice T) := { sealedInst := core.ops.range.RangeFull.Insts.CoreSliceIndexPrivate_slice_indexSealed get := core.ops.range.RangeFull.Insts.CoreSliceIndexSliceIndexSliceSlice.get get_mut := core.ops.range.RangeFull.Insts.CoreSliceIndexSliceIndexSliceSlice.get_mut get_unchecked := core.ops.range.RangeFull.Insts.CoreSliceIndexSliceIndexSliceSlice.get_unchecked get_unchecked_mut := core.ops.range.RangeFull.Insts.CoreSliceIndexSliceIndexSliceSlice.get_unchecked_mut index := core.ops.range.RangeFull.Insts.CoreSliceIndexSliceIndexSliceSlice.index index_mut := core.ops.range.RangeFull.Insts.CoreSliceIndexSliceIndexSliceSlice.index_mut } /-- Trait implementation: [subtle::{impl core::convert::From for bool}] Source: '/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/subtle-2.6.1/src/lib.rs', lines 138:0-138:26 Name pattern: [core::convert::From] -/ @[reducible, rust_trait_impl "core::convert::From"] def Bool.Insts.CoreConvertFromChoice : core.convert.From Bool subtle.Choice := { from_ := Bool.Insts.CoreConvertFromChoice.from } /-- Trait implementation: [subtle::{impl core::convert::From for subtle::Choice}] Source: '/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/subtle-2.6.1/src/lib.rs', lines 236:0-236:24 Name pattern: [core::convert::From] -/ @[reducible, rust_trait_impl "core::convert::From"] def subtle.Choice.Insts.CoreConvertFromU8 : core.convert.From subtle.Choice Std.U8 := { from_ := subtle.Choice.Insts.CoreConvertFromU8.from } /-- Trait implementation: [subtle::{impl subtle::ConstantTimeEq for u8}] Source: '/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/subtle-2.6.1/src/lib.rs', lines 346:8-346:36 Name pattern: [subtle::ConstantTimeEq] -/ @[reducible, rust_trait_impl "subtle::ConstantTimeEq"] def U8.Insts.SubtleConstantTimeEq : subtle.ConstantTimeEq Std.U8 := { ct_eq := U8.Insts.SubtleConstantTimeEq.ct_eq } /-- [curve25519_dalek::backend::variable_base_mul]: Source: 'curve25519-dalek/src/backend/mod.rs', lines 227:0-237:1 Visibility: public -/ def backend.variable_base_mul (point : edwards.EdwardsPoint) (scalar : scalar.Scalar) : Result edwards.EdwardsPoint := do let bk ← backend.get_selected_backend match bk with | backend.BackendKind.Avx2 => backend.vector.scalar_mul.variable_base.spec_avx2.mul point scalar | backend.BackendKind.Avx512 => backend.vector.scalar_mul.variable_base.spec_avx512ifma_avx512vl.mul point scalar | backend.BackendKind.Serial => backend.serial.scalar_mul.variable_base.mul point scalar /-- [curve25519_dalek::edwards::{curve25519_dalek::edwards::EdwardsPoint}::as_projective]: Source: 'curve25519-dalek/src/edwards.rs', lines 522:4-528:5 -/ def edwards.EdwardsPoint.as_projective (self : edwards.EdwardsPoint) : Result backend.serial.curve_models.ProjectivePoint := do ok { X := self.X, Y := self.Y, Z := self.Z } /-- [curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::pow2k::LOW_51_BIT_MASK] Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 511:12-511:58 -/ @[global_simps, irreducible] def backend.serial.u64.field.FieldElement51.pow2k.LOW_51_BIT_MASK : Result Std.U64 := do let i ← 1#u64 <<< 51#i32 i - 1#u64 /-- [curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::pow2k::m]: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 460:8-462:9 -/ def backend.serial.u64.field.FieldElement51.pow2k.m (x : Std.U64) (y : Std.U64) : Result Std.U128 := do let i ← lift (UScalar.cast .U128 x) let i1 ← lift (UScalar.cast .U128 y) i * i1 /-- [curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::pow2k]: loop body 0: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 480:16-492:86 Visibility: public -/ @[rust_loop_body] def backend.serial.u64.field.FieldElement51.pow2k_loop.body (k : Std.U32) (a : Array Std.U64 5#usize) : Result (ControlFlow (Std.U32 × (Array Std.U64 5#usize)) (Array Std.U64 5#usize)) := do let i ← Array.index_usize a 3#usize let a3_19 ← 19#u64 * i let i1 ← Array.index_usize a 4#usize let a4_19 ← 19#u64 * i1 let i2 ← Array.index_usize a 0#usize let i3 ← backend.serial.u64.field.FieldElement51.pow2k.m i2 i2 let i4 ← Array.index_usize a 1#usize let i5 ← backend.serial.u64.field.FieldElement51.pow2k.m i4 a4_19 let i6 ← Array.index_usize a 2#usize let i7 ← backend.serial.u64.field.FieldElement51.pow2k.m i6 a3_19 let i8 ← i5 + i7 let i9 ← 2#u128 * i8 let c0 ← i3 + i9 let i10 ← backend.serial.u64.field.FieldElement51.pow2k.m i a3_19 let i11 ← backend.serial.u64.field.FieldElement51.pow2k.m i2 i4 let i12 ← backend.serial.u64.field.FieldElement51.pow2k.m i6 a4_19 let i13 ← i11 + i12 let i14 ← 2#u128 * i13 let c1 ← i10 + i14 let i15 ← backend.serial.u64.field.FieldElement51.pow2k.m i4 i4 let i16 ← backend.serial.u64.field.FieldElement51.pow2k.m i2 i6 let i17 ← backend.serial.u64.field.FieldElement51.pow2k.m i1 a3_19 let i18 ← i16 + i17 let i19 ← 2#u128 * i18 let c2 ← i15 + i19 let i20 ← backend.serial.u64.field.FieldElement51.pow2k.m i1 a4_19 let i21 ← backend.serial.u64.field.FieldElement51.pow2k.m i2 i let i22 ← backend.serial.u64.field.FieldElement51.pow2k.m i4 i6 let i23 ← i21 + i22 let i24 ← 2#u128 * i23 let c3 ← i20 + i24 let i25 ← backend.serial.u64.field.FieldElement51.pow2k.m i6 i6 let i26 ← backend.serial.u64.field.FieldElement51.pow2k.m i2 i1 let i27 ← backend.serial.u64.field.FieldElement51.pow2k.m i4 i let i28 ← i26 + i27 let i29 ← 2#u128 * i28 let c4 ← i25 + i29 let i30 ← 1#u64 <<< 54#i32 massert (i2 < i30) massert (i4 < i30) massert (i6 < i30) massert (i < i30) massert (i1 < i30) let i31 ← c0 >>> 51#i32 let i32 ← lift (UScalar.cast .U64 i31) let i33 ← lift (UScalar.cast .U128 i32) let c11 ← c1 + i33 let i34 ← lift (UScalar.cast .U64 c0) let i35 ← backend.serial.u64.field.FieldElement51.pow2k.LOW_51_BIT_MASK let i36 ← lift (i34 &&& i35) let a1 ← Array.update a 0#usize i36 let i37 ← c11 >>> 51#i32 let i38 ← lift (UScalar.cast .U64 i37) let i39 ← lift (UScalar.cast .U128 i38) let c21 ← c2 + i39 let i40 ← lift (UScalar.cast .U64 c11) let i41 ← lift (i40 &&& i35) let a2 ← Array.update a1 1#usize i41 let i42 ← c21 >>> 51#i32 let i43 ← lift (UScalar.cast .U64 i42) let i44 ← lift (UScalar.cast .U128 i43) let c31 ← c3 + i44 let i45 ← lift (UScalar.cast .U64 c21) let i46 ← lift (i45 &&& i35) let a3 ← Array.update a2 2#usize i46 let i47 ← c31 >>> 51#i32 let i48 ← lift (UScalar.cast .U64 i47) let i49 ← lift (UScalar.cast .U128 i48) let c41 ← c4 + i49 let i50 ← lift (UScalar.cast .U64 c31) let i51 ← lift (i50 &&& i35) let a4 ← Array.update a3 3#usize i51 let i52 ← c41 >>> 51#i32 let carry ← lift (UScalar.cast .U64 i52) let i53 ← lift (UScalar.cast .U64 c41) let i54 ← lift (i53 &&& i35) let a5 ← Array.update a4 4#usize i54 let i55 ← carry * 19#u64 let i56 ← Array.index_usize a5 0#usize let i57 ← i56 + i55 let a6 ← Array.update a5 0#usize i57 let i58 ← Array.index_usize a6 0#usize let i59 ← i58 >>> 51#i32 let i60 ← Array.index_usize a6 1#usize let i61 ← i60 + i59 let a7 ← Array.update a6 1#usize i61 let i62 ← Array.index_usize a7 0#usize let i63 ← lift (i62 &&& i35) let (_, index_mut_back) ← Array.index_mut_usize a7 0#usize let k1 ← k - 1#u32 if k1 = 0#u32 then let a8 := index_mut_back i63 ok (done a8) else let a8 := index_mut_back i63 ok (cont (k1, a8)) /-- [curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::pow2k]: loop 0: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 480:16-492:86 Visibility: public -/ @[rust_loop] def backend.serial.u64.field.FieldElement51.pow2k_loop (k : Std.U32) (a : Array Std.U64 5#usize) : Result (Array Std.U64 5#usize) := do loop (fun (k1, a1) => backend.serial.u64.field.FieldElement51.pow2k_loop.body k1 a1) (k, a) /-- [curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::pow2k]: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 454:4-559:5 Visibility: public -/ def backend.serial.u64.field.FieldElement51.pow2k (self : backend.serial.u64.field.FieldElement51) (k : Std.U32) : Result backend.serial.u64.field.FieldElement51 := do massert (k > 0#u32) let a ← backend.serial.u64.field.FieldElement51.pow2k_loop k self ok a /-- [curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::square2]: loop body 0: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 569:8-571:9 Visibility: public -/ @[rust_loop_body] def backend.serial.u64.field.FieldElement51.square2_loop.body (iter : core.ops.range.Range Std.Usize) (square : backend.serial.u64.field.FieldElement51) : Result (ControlFlow ((core.ops.range.Range Std.Usize) × backend.serial.u64.field.FieldElement51) backend.serial.u64.field.FieldElement51) := do let (o, iter1) ← core.iter.range.IteratorRange.next core.iter.range.StepUsize iter match o with | none => ok (done square) | some i => let i1 ← Array.index_usize square i let i2 ← i1 * 2#u64 let a ← Array.update square i i2 ok (cont (iter1, a)) /-- [curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::square2]: loop 0: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 569:8-571:9 Visibility: public -/ @[rust_loop] def backend.serial.u64.field.FieldElement51.square2_loop (iter : core.ops.range.Range Std.Usize) (square : backend.serial.u64.field.FieldElement51) : Result backend.serial.u64.field.FieldElement51 := do loop (fun (iter1, square1) => backend.serial.u64.field.FieldElement51.square2_loop.body iter1 square1) (iter, square) /-- [curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::square2]: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 567:4-574:5 Visibility: public -/ def backend.serial.u64.field.FieldElement51.square2 (self : backend.serial.u64.field.FieldElement51) : Result backend.serial.u64.field.FieldElement51 := do let square ← backend.serial.u64.field.FieldElement51.pow2k self 1#u32 backend.serial.u64.field.FieldElement51.square2_loop { start := 0#usize, «end» := 5#usize } square /-- [curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::square]: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 562:4-564:5 Visibility: public -/ def backend.serial.u64.field.FieldElement51.square (self : backend.serial.u64.field.FieldElement51) : Result backend.serial.u64.field.FieldElement51 := do backend.serial.u64.field.FieldElement51.pow2k self 1#u32 /-- [curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::reduce::LOW_51_BIT_MASK] Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 291:8-291:54 -/ @[global_simps, irreducible] def backend.serial.u64.field.FieldElement51.reduce.LOW_51_BIT_MASK : Result Std.U64 := do let i ← 1#u64 <<< 51#i32 i - 1#u64 /-- [curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::reduce]: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 290:4-323:5 -/ def backend.serial.u64.field.FieldElement51.reduce (limbs : Array Std.U64 5#usize) : Result backend.serial.u64.field.FieldElement51 := do let i ← Array.index_usize limbs 0#usize let c0 ← i >>> 51#i32 let i1 ← Array.index_usize limbs 1#usize let c1 ← i1 >>> 51#i32 let i2 ← Array.index_usize limbs 2#usize let c2 ← i2 >>> 51#i32 let i3 ← Array.index_usize limbs 3#usize let c3 ← i3 >>> 51#i32 let i4 ← Array.index_usize limbs 4#usize let c4 ← i4 >>> 51#i32 let i5 ← backend.serial.u64.field.FieldElement51.reduce.LOW_51_BIT_MASK let i6 ← lift (i &&& i5) let limbs1 ← Array.update limbs 0#usize i6 let i7 ← Array.index_usize limbs1 1#usize let i8 ← lift (i7 &&& i5) let limbs2 ← Array.update limbs1 1#usize i8 let i9 ← Array.index_usize limbs2 2#usize let i10 ← lift (i9 &&& i5) let limbs3 ← Array.update limbs2 2#usize i10 let i11 ← Array.index_usize limbs3 3#usize let i12 ← lift (i11 &&& i5) let limbs4 ← Array.update limbs3 3#usize i12 let i13 ← Array.index_usize limbs4 4#usize let i14 ← lift (i13 &&& i5) let limbs5 ← Array.update limbs4 4#usize i14 let i15 ← c4 * 19#u64 let i16 ← Array.index_usize limbs5 0#usize let i17 ← i16 + i15 let limbs6 ← Array.update limbs5 0#usize i17 let i18 ← Array.index_usize limbs6 1#usize let i19 ← i18 + c0 let limbs7 ← Array.update limbs6 1#usize i19 let i20 ← Array.index_usize limbs7 2#usize let i21 ← i20 + c1 let limbs8 ← Array.update limbs7 2#usize i21 let i22 ← Array.index_usize limbs8 3#usize let i23 ← i22 + c2 let limbs9 ← Array.update limbs8 3#usize i23 let i24 ← Array.index_usize limbs9 4#usize let i25 ← i24 + c3 let limbs10 ← Array.update limbs9 4#usize i25 ok limbs10 /-- [curve25519_dalek::backend::serial::u64::field::{impl core::ops::arith::Sub<&'b curve25519_dalek::backend::serial::u64::field::FieldElement51, curve25519_dalek::backend::serial::u64::field::FieldElement51> for &'a curve25519_dalek::backend::serial::u64::field::FieldElement51}::sub]: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 84:4-101:5 Visibility: public -/ def SharedAFieldElement51.Insts.CoreOpsArithSubSharedBFieldElement51FieldElement51.sub (self : backend.serial.u64.field.FieldElement51) (_rhs : backend.serial.u64.field.FieldElement51) : Result backend.serial.u64.field.FieldElement51 := do let i ← Array.index_usize self 0#usize let i1 ← i + 36028797018963664#u64 let i2 ← Array.index_usize _rhs 0#usize let i3 ← i1 - i2 let i4 ← Array.index_usize self 1#usize let i5 ← i4 + 36028797018963952#u64 let i6 ← Array.index_usize _rhs 1#usize let i7 ← i5 - i6 let i8 ← Array.index_usize self 2#usize let i9 ← i8 + 36028797018963952#u64 let i10 ← Array.index_usize _rhs 2#usize let i11 ← i9 - i10 let i12 ← Array.index_usize self 3#usize let i13 ← i12 + 36028797018963952#u64 let i14 ← Array.index_usize _rhs 3#usize let i15 ← i13 - i14 let i16 ← Array.index_usize self 4#usize let i17 ← i16 + 36028797018963952#u64 let i18 ← Array.index_usize _rhs 4#usize let i19 ← i17 - i18 backend.serial.u64.field.FieldElement51.reduce (Array.make 5#usize [ i3, i7, i11, i15, i19 ]) /-- [curve25519_dalek::backend::serial::u64::field::{impl core::ops::arith::AddAssign<&'b curve25519_dalek::backend::serial::u64::field::FieldElement51> for curve25519_dalek::backend::serial::u64::field::FieldElement51}::add_assign]: loop body 0: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 60:8-62:9 Visibility: public -/ @[rust_loop_body] def backend.serial.u64.field.FieldElement51.Insts.CoreOpsArithAddAssignSharedBFieldElement51.add_assign_loop.body (iter : core.ops.range.Range Std.Usize) (self : backend.serial.u64.field.FieldElement51) (_rhs : backend.serial.u64.field.FieldElement51) : Result (ControlFlow ((core.ops.range.Range Std.Usize) × backend.serial.u64.field.FieldElement51 × backend.serial.u64.field.FieldElement51) backend.serial.u64.field.FieldElement51) := do let (o, iter1) ← core.iter.range.IteratorRange.next core.iter.range.StepUsize iter match o with | none => ok (done self) | some i => let i1 ← Array.index_usize _rhs i let i2 ← Array.index_usize self i let i3 ← i2 + i1 let a ← Array.update self i i3 ok (cont (iter1, a, _rhs)) /-- [curve25519_dalek::backend::serial::u64::field::{impl core::ops::arith::AddAssign<&'b curve25519_dalek::backend::serial::u64::field::FieldElement51> for curve25519_dalek::backend::serial::u64::field::FieldElement51}::add_assign]: loop 0: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 60:8-62:9 Visibility: public -/ @[rust_loop] def backend.serial.u64.field.FieldElement51.Insts.CoreOpsArithAddAssignSharedBFieldElement51.add_assign_loop (iter : core.ops.range.Range Std.Usize) (self : backend.serial.u64.field.FieldElement51) (_rhs : backend.serial.u64.field.FieldElement51) : Result backend.serial.u64.field.FieldElement51 := do loop (fun (iter1, self1, _rhs1) => backend.serial.u64.field.FieldElement51.Insts.CoreOpsArithAddAssignSharedBFieldElement51.add_assign_loop.body iter1 self1 _rhs1) (iter, self, _rhs) /-- [curve25519_dalek::backend::serial::u64::field::{impl core::ops::arith::AddAssign<&'b curve25519_dalek::backend::serial::u64::field::FieldElement51> for curve25519_dalek::backend::serial::u64::field::FieldElement51}::add_assign]: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 59:4-63:5 Visibility: public -/ @[reducible] def backend.serial.u64.field.FieldElement51.Insts.CoreOpsArithAddAssignSharedBFieldElement51.add_assign (self : backend.serial.u64.field.FieldElement51) (_rhs : backend.serial.u64.field.FieldElement51) : Result backend.serial.u64.field.FieldElement51 := do backend.serial.u64.field.FieldElement51.Insts.CoreOpsArithAddAssignSharedBFieldElement51.add_assign_loop { start := 0#usize, «end» := 5#usize } self _rhs /-- [curve25519_dalek::backend::serial::u64::field::{impl core::ops::arith::Add<&'b curve25519_dalek::backend::serial::u64::field::FieldElement51, curve25519_dalek::backend::serial::u64::field::FieldElement51> for &'a curve25519_dalek::backend::serial::u64::field::FieldElement51}::add]: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 68:4-72:5 Visibility: public -/ def SharedAFieldElement51.Insts.CoreOpsArithAddSharedBFieldElement51FieldElement51.add (self : backend.serial.u64.field.FieldElement51) (_rhs : backend.serial.u64.field.FieldElement51) : Result backend.serial.u64.field.FieldElement51 := do backend.serial.u64.field.FieldElement51.Insts.CoreOpsArithAddAssignSharedBFieldElement51.add_assign self _rhs /-- [curve25519_dalek::backend::serial::curve_models::{curve25519_dalek::backend::serial::curve_models::ProjectivePoint}::double]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 381:4-397:5 Visibility: public -/ def backend.serial.curve_models.ProjectivePoint.double (self : backend.serial.curve_models.ProjectivePoint) : Result backend.serial.curve_models.CompletedPoint := do let XX ← backend.serial.u64.field.FieldElement51.square self.X let YY ← backend.serial.u64.field.FieldElement51.square self.Y let ZZ2 ← backend.serial.u64.field.FieldElement51.square2 self.Z let X_plus_Y ← SharedAFieldElement51.Insts.CoreOpsArithAddSharedBFieldElement51FieldElement51.add self.X self.Y let X_plus_Y_sq ← backend.serial.u64.field.FieldElement51.square X_plus_Y let YY_plus_XX ← SharedAFieldElement51.Insts.CoreOpsArithAddSharedBFieldElement51FieldElement51.add YY XX let YY_minus_XX ← SharedAFieldElement51.Insts.CoreOpsArithSubSharedBFieldElement51FieldElement51.sub YY XX let fe ← SharedAFieldElement51.Insts.CoreOpsArithSubSharedBFieldElement51FieldElement51.sub X_plus_Y_sq YY_plus_XX let fe1 ← SharedAFieldElement51.Insts.CoreOpsArithSubSharedBFieldElement51FieldElement51.sub ZZ2 YY_minus_XX ok { X := fe, Y := YY_plus_XX, Z := YY_minus_XX, T := fe1 } /-- [curve25519_dalek::backend::serial::u64::field::{impl core::ops::arith::Mul<&'b curve25519_dalek::backend::serial::u64::field::FieldElement51, curve25519_dalek::backend::serial::u64::field::FieldElement51> for &'a curve25519_dalek::backend::serial::u64::field::FieldElement51}::mul::LOW_51_BIT_MASK] Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 172:8-172:54 -/ @[global_simps, irreducible] def backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.LOW_51_BIT_MASK : Result Std.U64 := do let i ← 1#u64 <<< 51#i32 i - 1#u64 /-- [curve25519_dalek::backend::serial::u64::field::{impl core::ops::arith::Mul<&'b curve25519_dalek::backend::serial::u64::field::FieldElement51, curve25519_dalek::backend::serial::u64::field::FieldElement51> for &'a curve25519_dalek::backend::serial::u64::field::FieldElement51}::mul::m]: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 119:8-119:66 -/ def backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m (x : Std.U64) (y : Std.U64) : Result Std.U128 := do let i ← lift (UScalar.cast .U128 x) let i1 ← lift (UScalar.cast .U128 y) i * i1 /-- [curve25519_dalek::backend::serial::u64::field::{impl core::ops::arith::Mul<&'b curve25519_dalek::backend::serial::u64::field::FieldElement51, curve25519_dalek::backend::serial::u64::field::FieldElement51> for &'a curve25519_dalek::backend::serial::u64::field::FieldElement51}::mul]: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 115:4-213:5 Visibility: public -/ def SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul (self : backend.serial.u64.field.FieldElement51) (_rhs : backend.serial.u64.field.FieldElement51) : Result backend.serial.u64.field.FieldElement51 := do let i ← Array.index_usize _rhs 1#usize let b1_19 ← i * 19#u64 let i1 ← Array.index_usize _rhs 2#usize let b2_19 ← i1 * 19#u64 let i2 ← Array.index_usize _rhs 3#usize let b3_19 ← i2 * 19#u64 let i3 ← Array.index_usize _rhs 4#usize let b4_19 ← i3 * 19#u64 let i4 ← Array.index_usize self 0#usize let i5 ← Array.index_usize _rhs 0#usize let i6 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m i4 i5 let i7 ← Array.index_usize self 4#usize let i8 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m i7 b1_19 let i9 ← i6 + i8 let i10 ← Array.index_usize self 3#usize let i11 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m i10 b2_19 let i12 ← i9 + i11 let i13 ← Array.index_usize self 2#usize let i14 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m i13 b3_19 let i15 ← i12 + i14 let i16 ← Array.index_usize self 1#usize let i17 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m i16 b4_19 let c0 ← i15 + i17 let i18 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m i16 i5 let i19 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m i4 i let i20 ← i18 + i19 let i21 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m i7 b2_19 let i22 ← i20 + i21 let i23 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m i10 b3_19 let i24 ← i22 + i23 let i25 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m i13 b4_19 let c1 ← i24 + i25 let i26 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m i13 i5 let i27 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m i16 i let i28 ← i26 + i27 let i29 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m i4 i1 let i30 ← i28 + i29 let i31 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m i7 b3_19 let i32 ← i30 + i31 let i33 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m i10 b4_19 let c2 ← i32 + i33 let i34 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m i10 i5 let i35 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m i13 i let i36 ← i34 + i35 let i37 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m i16 i1 let i38 ← i36 + i37 let i39 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m i4 i2 let i40 ← i38 + i39 let i41 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m i7 b4_19 let c3 ← i40 + i41 let i42 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m i7 i5 let i43 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m i10 i let i44 ← i42 + i43 let i45 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m i13 i1 let i46 ← i44 + i45 let i47 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m i16 i2 let i48 ← i46 + i47 let i49 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.m i4 i3 let c4 ← i48 + i49 let i50 ← 1#u64 <<< 54#i32 massert (i4 < i50) massert (i5 < i50) massert (i16 < i50) massert (i < i50) massert (i13 < i50) massert (i1 < i50) massert (i10 < i50) massert (i2 < i50) massert (i7 < i50) massert (i3 < i50) let out := Array.repeat 5#usize 0#u64 let i51 ← c0 >>> 51#i32 let i52 ← lift (UScalar.cast .U64 i51) let i53 ← lift (UScalar.cast .U128 i52) let c11 ← c1 + i53 let i54 ← lift (UScalar.cast .U64 c0) let i55 ← backend.serial.u64.field.MulSharedAFieldElement51SharedBFieldElement51FieldElement51.mul.LOW_51_BIT_MASK let i56 ← lift (i54 &&& i55) let out1 ← Array.update out 0#usize i56 let i57 ← c11 >>> 51#i32 let i58 ← lift (UScalar.cast .U64 i57) let i59 ← lift (UScalar.cast .U128 i58) let c21 ← c2 + i59 let i60 ← lift (UScalar.cast .U64 c11) let i61 ← lift (i60 &&& i55) let out2 ← Array.update out1 1#usize i61 let i62 ← c21 >>> 51#i32 let i63 ← lift (UScalar.cast .U64 i62) let i64 ← lift (UScalar.cast .U128 i63) let c31 ← c3 + i64 let i65 ← lift (UScalar.cast .U64 c21) let i66 ← lift (i65 &&& i55) let out3 ← Array.update out2 2#usize i66 let i67 ← c31 >>> 51#i32 let i68 ← lift (UScalar.cast .U64 i67) let i69 ← lift (UScalar.cast .U128 i68) let c41 ← c4 + i69 let i70 ← lift (UScalar.cast .U64 c31) let i71 ← lift (i70 &&& i55) let out4 ← Array.update out3 3#usize i71 let i72 ← c41 >>> 51#i32 let carry ← lift (UScalar.cast .U64 i72) let i73 ← lift (UScalar.cast .U64 c41) let i74 ← lift (i73 &&& i55) let out5 ← Array.update out4 4#usize i74 let i75 ← carry * 19#u64 let i76 ← Array.index_usize out5 0#usize let i77 ← i76 + i75 let out6 ← Array.update out5 0#usize i77 let i78 ← Array.index_usize out6 0#usize let i79 ← i78 >>> 51#i32 let i80 ← Array.index_usize out6 1#usize let i81 ← i80 + i79 let out7 ← Array.update out6 1#usize i81 let i82 ← Array.index_usize out7 0#usize let i83 ← lift (i82 &&& i55) let out8 ← Array.update out7 0#usize i83 ok out8 /-- [curve25519_dalek::backend::serial::curve_models::{curve25519_dalek::backend::serial::curve_models::CompletedPoint}::as_extended]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 365:4-372:5 Visibility: public -/ def backend.serial.curve_models.CompletedPoint.as_extended (self : backend.serial.curve_models.CompletedPoint) : Result edwards.EdwardsPoint := do let fe ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self.X self.T let fe1 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self.Y self.Z let fe2 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self.Z self.T let fe3 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self.X self.Y ok { X := fe, Y := fe1, Z := fe2, T := fe3 } /-- [curve25519_dalek::edwards::{curve25519_dalek::edwards::EdwardsPoint}::double]: Source: 'curve25519-dalek/src/edwards.rs', lines 616:4-618:5 -/ def edwards.EdwardsPoint.double (self : edwards.EdwardsPoint) : Result edwards.EdwardsPoint := do let pp ← edwards.EdwardsPoint.as_projective self let cp ← backend.serial.curve_models.ProjectivePoint.double pp backend.serial.curve_models.CompletedPoint.as_extended cp /-- [curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::from_limbs]: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 258:4-260:5 -/ def backend.serial.u64.field.FieldElement51.from_limbs (limbs : Array Std.U64 5#usize) : Result backend.serial.u64.field.FieldElement51 := do ok limbs /-- [curve25519_dalek::backend::serial::u64::constants::EDWARDS_D2] Source: 'curve25519-dalek/src/backend/serial/u64/constants.rs', lines 44:0-50:3 -/ @[global_simps, irreducible] def backend.serial.u64.constants.EDWARDS_D2 : Result backend.serial.u64.field.FieldElement51 := backend.serial.u64.field.FieldElement51.from_limbs (Array.make 5#usize [ 1859910466990425#u64, 932731440258426#u64, 1072319116312658#u64, 1815898335770999#u64, 633789495995903#u64 ]) /-- [curve25519_dalek::edwards::{curve25519_dalek::edwards::EdwardsPoint}::as_projective_niels]: Source: 'curve25519-dalek/src/edwards.rs', lines 509:4-516:5 -/ def edwards.EdwardsPoint.as_projective_niels (self : edwards.EdwardsPoint) : Result backend.serial.curve_models.ProjectiveNielsPoint := do let fe ← SharedAFieldElement51.Insts.CoreOpsArithAddSharedBFieldElement51FieldElement51.add self.Y self.X let fe1 ← SharedAFieldElement51.Insts.CoreOpsArithSubSharedBFieldElement51FieldElement51.sub self.Y self.X let fe2 ← backend.serial.u64.constants.EDWARDS_D2 let fe3 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self.T fe2 ok { Y_plus_X := fe, Y_minus_X := fe1, Z := self.Z, T2d := fe3 } /-- [curve25519_dalek::backend::serial::curve_models::{impl core::ops::arith::Add<&'b curve25519_dalek::backend::serial::curve_models::ProjectiveNielsPoint, curve25519_dalek::backend::serial::curve_models::CompletedPoint> for &'a curve25519_dalek::edwards::EdwardsPoint}::add]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 414:4-429:5 Visibility: public -/ def SharedAEdwardsPoint.Insts.CoreOpsArithAddSharedBProjectiveNielsPointCompletedPoint.add (self : edwards.EdwardsPoint) (other : backend.serial.curve_models.ProjectiveNielsPoint) : Result backend.serial.curve_models.CompletedPoint := do let Y_plus_X ← SharedAFieldElement51.Insts.CoreOpsArithAddSharedBFieldElement51FieldElement51.add self.Y self.X let Y_minus_X ← SharedAFieldElement51.Insts.CoreOpsArithSubSharedBFieldElement51FieldElement51.sub self.Y self.X let PP ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul Y_plus_X other.Y_plus_X let MM ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul Y_minus_X other.Y_minus_X let TT2d ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self.T other.T2d let ZZ ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self.Z other.Z let ZZ2 ← SharedAFieldElement51.Insts.CoreOpsArithAddSharedBFieldElement51FieldElement51.add ZZ ZZ let fe ← SharedAFieldElement51.Insts.CoreOpsArithSubSharedBFieldElement51FieldElement51.sub PP MM let fe1 ← SharedAFieldElement51.Insts.CoreOpsArithAddSharedBFieldElement51FieldElement51.add PP MM let fe2 ← SharedAFieldElement51.Insts.CoreOpsArithAddSharedBFieldElement51FieldElement51.add ZZ2 TT2d let fe3 ← SharedAFieldElement51.Insts.CoreOpsArithSubSharedBFieldElement51FieldElement51.sub ZZ2 TT2d ok { X := fe, Y := fe1, Z := fe2, T := fe3 } /-- [curve25519_dalek::window::{impl core::convert::From<&'a curve25519_dalek::edwards::EdwardsPoint> for curve25519_dalek::window::NafLookupTable5}::from]: loop body 0: Source: 'curve25519-dalek/src/window.rs', lines 205:8-207:9 Visibility: public -/ @[rust_loop_body] def window.NafLookupTable5ProjectiveNielsPoint.Insts.CoreConvertFromSharedAEdwardsPoint.from_loop.body (A2 : edwards.EdwardsPoint) (iter : core.ops.range.Range Std.Usize) (Ai : Array backend.serial.curve_models.ProjectiveNielsPoint 8#usize) : Result (ControlFlow ((core.ops.range.Range Std.Usize) × (Array backend.serial.curve_models.ProjectiveNielsPoint 8#usize)) (Array backend.serial.curve_models.ProjectiveNielsPoint 8#usize)) := do let (o, iter1) ← core.iter.range.IteratorRange.next core.iter.range.StepUsize iter match o with | none => ok (done Ai) | some i => let pnp ← Array.index_usize Ai i let cp ← SharedAEdwardsPoint.Insts.CoreOpsArithAddSharedBProjectiveNielsPointCompletedPoint.add A2 pnp let ep ← backend.serial.curve_models.CompletedPoint.as_extended cp let pnp1 ← edwards.EdwardsPoint.as_projective_niels ep let i1 ← i + 1#usize let a ← Array.update Ai i1 pnp1 ok (cont (iter1, a)) /-- [curve25519_dalek::window::{impl core::convert::From<&'a curve25519_dalek::edwards::EdwardsPoint> for curve25519_dalek::window::NafLookupTable5}::from]: loop 0: Source: 'curve25519-dalek/src/window.rs', lines 205:8-207:9 Visibility: public -/ @[rust_loop] def window.NafLookupTable5ProjectiveNielsPoint.Insts.CoreConvertFromSharedAEdwardsPoint.from_loop (iter : core.ops.range.Range Std.Usize) (Ai : Array backend.serial.curve_models.ProjectiveNielsPoint 8#usize) (A2 : edwards.EdwardsPoint) : Result (Array backend.serial.curve_models.ProjectiveNielsPoint 8#usize) := do loop (fun (iter1, Ai1) => window.NafLookupTable5ProjectiveNielsPoint.Insts.CoreConvertFromSharedAEdwardsPoint.from_loop.body A2 iter1 Ai1) (iter, Ai) /-- [curve25519_dalek::window::{impl core::convert::From<&'a curve25519_dalek::edwards::EdwardsPoint> for curve25519_dalek::window::NafLookupTable5}::from]: Source: 'curve25519-dalek/src/window.rs', lines 202:4-210:5 Visibility: public -/ def window.NafLookupTable5ProjectiveNielsPoint.Insts.CoreConvertFromSharedAEdwardsPoint.from (A : edwards.EdwardsPoint) : Result (window.NafLookupTable5 backend.serial.curve_models.ProjectiveNielsPoint) := do let pnp ← edwards.EdwardsPoint.as_projective_niels A let Ai := Array.repeat 8#usize pnp let A2 ← edwards.EdwardsPoint.double A let Ai1 ← window.NafLookupTable5ProjectiveNielsPoint.Insts.CoreConvertFromSharedAEdwardsPoint.from_loop { start := 0#usize, «end» := 7#usize } Ai A2 ok Ai1 /-- [curve25519_dalek::scalar::{curve25519_dalek::scalar::Scalar}::non_adjacent_form]: loop body 1: Source: 'curve25519-dalek/src/scalar.rs', lines 944:12-947:13 -/ @[rust_loop_body] def scalar.Scalar.non_adjacent_form_loop0_loop0.body (self : scalar.Scalar) (k : Std.Usize) (t : Std.U64) (bi : Std.Usize) : Result (ControlFlow (Std.U64 × Std.Usize) (scalar.Scalar × Std.U64)) := do if bi < 8#usize then let i ← 8#usize * k let i1 ← i + bi let i2 ← Array.index_usize self.bytes i1 let i3 ← lift (UScalar.cast .U64 i2) let i4 ← 8#usize * bi let i5 ← i3 <<< i4 let t1 ← lift (t ||| i5) let bi1 ← bi + 1#usize ok (cont (t1, bi1)) else ok (done (self, t)) /-- [curve25519_dalek::scalar::{curve25519_dalek::scalar::Scalar}::non_adjacent_form]: loop 1: Source: 'curve25519-dalek/src/scalar.rs', lines 944:12-947:13 -/ @[rust_loop] def scalar.Scalar.non_adjacent_form_loop0_loop0 (self : scalar.Scalar) (k : Std.Usize) (t : Std.U64) (bi : Std.Usize) : Result (scalar.Scalar × Std.U64) := do loop (fun (t1, bi1) => scalar.Scalar.non_adjacent_form_loop0_loop0.body self k t1 bi1) (t, bi) /-- [curve25519_dalek::scalar::{curve25519_dalek::scalar::Scalar}::non_adjacent_form]: loop body 0: Source: 'curve25519-dalek/src/scalar.rs', lines 941:8-950:9 -/ @[rust_loop_body] def scalar.Scalar.non_adjacent_form_loop0.body (self : scalar.Scalar) (x_u64 : Array Std.U64 5#usize) (k : Std.Usize) : Result (ControlFlow (scalar.Scalar × (Array Std.U64 5#usize) × Std.Usize) (Array Std.U64 5#usize)) := do if k < 4#usize then let (self1, t) ← scalar.Scalar.non_adjacent_form_loop0_loop0 self k 0#u64 0#usize let a ← Array.update x_u64 k t let k1 ← k + 1#usize ok (cont (self1, a, k1)) else ok (done x_u64) /-- [curve25519_dalek::scalar::{curve25519_dalek::scalar::Scalar}::non_adjacent_form]: loop 0: Source: 'curve25519-dalek/src/scalar.rs', lines 941:8-950:9 -/ @[rust_loop] def scalar.Scalar.non_adjacent_form_loop0 (self : scalar.Scalar) (x_u64 : Array Std.U64 5#usize) (k : Std.Usize) : Result (Array Std.U64 5#usize) := do loop (fun (self1, x_u641, k1) => scalar.Scalar.non_adjacent_form_loop0.body self1 x_u641 k1) (self, x_u64, k) /-- [curve25519_dalek::scalar::{curve25519_dalek::scalar::Scalar}::non_adjacent_form]: loop body 2: Source: 'curve25519-dalek/src/scalar.rs', lines 957:8-990:9 -/ @[rust_loop_body] def scalar.Scalar.non_adjacent_form_loop1.body (w : Std.Usize) (x_u64 : Array Std.U64 5#usize) (width : Std.U64) (window_mask : Std.U64) (naf : Array Std.I8 256#usize) (pos : Std.Usize) (carry : Std.U64) : Result (ControlFlow ((Array Std.I8 256#usize) × Std.Usize × Std.U64) (Array Std.I8 256#usize)) := do if pos < 256#usize then let u64_idx ← pos / 64#usize let bit_idx ← pos % 64#usize let i ← 64#usize - w let bit_buf ← if bit_idx < i then do let i1 ← Array.index_usize x_u64 u64_idx i1 >>> bit_idx else do let i1 ← Array.index_usize x_u64 u64_idx let i2 ← i1 >>> bit_idx let i3 ← 1#usize + u64_idx let i4 ← Array.index_usize x_u64 i3 let i5 ← 64#usize - bit_idx let i6 ← i4 <<< i5 ok (i2 ||| i6) let i1 ← lift (bit_buf &&& window_mask) let window ← carry + i1 let i2 ← lift (window &&& 1#u64) if i2 = 0#u64 then let pos1 ← pos + 1#usize ok (cont (naf, pos1, carry)) else let i3 ← width / 2#u64 let (naf1, carry1) ← if window < i3 then do let i4 ← lift (UScalar.hcast .I8 window) let a ← Array.update naf pos i4 ok (a, 0#u64) else do let i4 ← lift (UScalar.hcast .I8 window) let i5 ← lift (UScalar.hcast .I8 width) let i6 ← lift (core.num.I8.wrapping_sub i4 i5) let a ← Array.update naf pos i6 ok (a, 1#u64) let pos1 ← pos + w ok (cont (naf1, pos1, carry1)) else ok (done naf) /-- [curve25519_dalek::scalar::{curve25519_dalek::scalar::Scalar}::non_adjacent_form]: loop 2: Source: 'curve25519-dalek/src/scalar.rs', lines 957:8-990:9 -/ @[rust_loop] def scalar.Scalar.non_adjacent_form_loop1 (w : Std.Usize) (naf : Array Std.I8 256#usize) (x_u64 : Array Std.U64 5#usize) (width : Std.U64) (window_mask : Std.U64) (pos : Std.Usize) (carry : Std.U64) : Result (Array Std.I8 256#usize) := do loop (fun (naf1, pos1, carry1) => scalar.Scalar.non_adjacent_form_loop1.body w x_u64 width window_mask naf1 pos1 carry1) (naf, pos, carry) /-- [curve25519_dalek::scalar::{curve25519_dalek::scalar::Scalar}::non_adjacent_form]: Source: 'curve25519-dalek/src/scalar.rs', lines 928:4-993:5 -/ def scalar.Scalar.non_adjacent_form (self : scalar.Scalar) (w : Std.Usize) : Result (Array Std.I8 256#usize) := do massert (w >= 2#usize) massert (w <= 8#usize) let naf := Array.repeat 256#usize 0#i8 let x_u64 := Array.repeat 5#usize 0#u64 let x_u641 ← scalar.Scalar.non_adjacent_form_loop0 self x_u64 0#usize let width ← 1#u64 <<< w let window_mask ← width - 1#u64 scalar.Scalar.non_adjacent_form_loop1 w naf x_u641 width window_mask 0#usize 0#u64 /-- [curve25519_dalek::backend::serial::u64::constants::ED25519_BASEPOINT_POINT] Source: 'curve25519-dalek/src/backend/serial/u64/constants.rs', lines 151:0-174:2 Visibility: public -/ @[global_simps, irreducible] def backend.serial.u64.constants.ED25519_BASEPOINT_POINT : Result edwards.EdwardsPoint := do let fe ← backend.serial.u64.field.FieldElement51.from_limbs (Array.make 5#usize [ 1738742601995546#u64, 1146398526822698#u64, 2070867633025821#u64, 562264141797630#u64, 587772402128613#u64 ]) let fe1 ← backend.serial.u64.field.FieldElement51.from_limbs (Array.make 5#usize [ 1801439850948184#u64, 1351079888211148#u64, 450359962737049#u64, 900719925474099#u64, 1801439850948198#u64 ]) let fe2 ← backend.serial.u64.field.FieldElement51.from_limbs (Array.make 5#usize [ 1#u64, 0#u64, 0#u64, 0#u64, 0#u64 ]) let fe3 ← backend.serial.u64.field.FieldElement51.from_limbs (Array.make 5#usize [ 1841354044333475#u64, 16398895984059#u64, 755974180946558#u64, 900171276175154#u64, 1821297809914039#u64 ]) ok { X := fe, Y := fe1, Z := fe2, T := fe3 } /-- [curve25519_dalek::window::{curve25519_dalek::window::NafLookupTable5}::select]: Source: 'curve25519-dalek/src/window.rs', lines 187:4-192:5 Visibility: public -/ def window.NafLookupTable5.select {T : Type} (coremarkerCopyInst : core.marker.Copy T) (self : window.NafLookupTable5 T) (x : Std.Usize) : Result T := do let left_val ← lift (x &&& 1#usize) massert (left_val = 1#usize) massert (x < 16#usize) let i ← x / 2#usize Array.index_usize self i /-- [curve25519_dalek::backend::serial::curve_models::{impl core::ops::arith::Sub<&'b curve25519_dalek::backend::serial::curve_models::ProjectiveNielsPoint, curve25519_dalek::backend::serial::curve_models::CompletedPoint> for &'a curve25519_dalek::edwards::EdwardsPoint}::sub]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 436:4-451:5 Visibility: public -/ def SharedAEdwardsPoint.Insts.CoreOpsArithSubSharedBProjectiveNielsPointCompletedPoint.sub (self : edwards.EdwardsPoint) (other : backend.serial.curve_models.ProjectiveNielsPoint) : Result backend.serial.curve_models.CompletedPoint := do let Y_plus_X ← SharedAFieldElement51.Insts.CoreOpsArithAddSharedBFieldElement51FieldElement51.add self.Y self.X let Y_minus_X ← SharedAFieldElement51.Insts.CoreOpsArithSubSharedBFieldElement51FieldElement51.sub self.Y self.X let PM ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul Y_plus_X other.Y_minus_X let MP ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul Y_minus_X other.Y_plus_X let TT2d ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self.T other.T2d let ZZ ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self.Z other.Z let ZZ2 ← SharedAFieldElement51.Insts.CoreOpsArithAddSharedBFieldElement51FieldElement51.add ZZ ZZ let fe ← SharedAFieldElement51.Insts.CoreOpsArithSubSharedBFieldElement51FieldElement51.sub PM MP let fe1 ← SharedAFieldElement51.Insts.CoreOpsArithAddSharedBFieldElement51FieldElement51.add PM MP let fe2 ← SharedAFieldElement51.Insts.CoreOpsArithSubSharedBFieldElement51FieldElement51.sub ZZ2 TT2d let fe3 ← SharedAFieldElement51.Insts.CoreOpsArithAddSharedBFieldElement51FieldElement51.add ZZ2 TT2d ok { X := fe, Y := fe1, Z := fe2, T := fe3 } /-- [curve25519_dalek::backend::serial::curve_models::{impl core::clone::Clone for curve25519_dalek::backend::serial::curve_models::ProjectiveNielsPoint}::clone]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 204:15-204:20 Visibility: public -/ def backend.serial.curve_models.ProjectiveNielsPoint.Insts.CoreCloneClone.clone (self : backend.serial.curve_models.ProjectiveNielsPoint) : Result backend.serial.curve_models.ProjectiveNielsPoint := do ok self /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl core::clone::Clone for curve25519_dalek::backend::serial::curve_models::ProjectiveNielsPoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 204:15-204:20 -/ @[reducible] def backend.serial.curve_models.ProjectiveNielsPoint.Insts.CoreCloneClone : core.clone.Clone backend.serial.curve_models.ProjectiveNielsPoint := { clone := backend.serial.curve_models.ProjectiveNielsPoint.Insts.CoreCloneClone.clone } /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl core::marker::Copy for curve25519_dalek::backend::serial::curve_models::ProjectiveNielsPoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 204:9-204:13 -/ @[reducible] def backend.serial.curve_models.ProjectiveNielsPoint.Insts.CoreMarkerCopy : core.marker.Copy backend.serial.curve_models.ProjectiveNielsPoint := { cloneInst := backend.serial.curve_models.ProjectiveNielsPoint.Insts.CoreCloneClone } /-- [curve25519_dalek::backend::serial::scalar_mul::vartime_double_base::dsm_step_p]: Source: 'curve25519-dalek/src/backend/serial/scalar_mul/vartime_double_base.rs', lines 86:0-98:1 -/ def backend.serial.scalar_mul.vartime_double_base.dsm_step_p (t : backend.serial.curve_models.CompletedPoint) (table : window.NafLookupTable5 backend.serial.curve_models.ProjectiveNielsPoint) (d : Std.I8) : Result backend.serial.curve_models.CompletedPoint := do if d > 0#i8 then let ep ← backend.serial.curve_models.CompletedPoint.as_extended t let i ← lift (IScalar.hcast .Usize d) let pnp ← window.NafLookupTable5.select backend.serial.curve_models.ProjectiveNielsPoint.Insts.CoreMarkerCopy table i SharedAEdwardsPoint.Insts.CoreOpsArithAddSharedBProjectiveNielsPointCompletedPoint.add ep pnp else if d < 0#i8 then let ep ← backend.serial.curve_models.CompletedPoint.as_extended t let i ← -. d let i1 ← lift (IScalar.hcast .Usize i) let pnp ← window.NafLookupTable5.select backend.serial.curve_models.ProjectiveNielsPoint.Insts.CoreMarkerCopy table i1 SharedAEdwardsPoint.Insts.CoreOpsArithSubSharedBProjectiveNielsPointCompletedPoint.sub ep pnp else ok t /-- [curve25519_dalek::backend::serial::scalar_mul::vartime_double_base::dsm_step_b]: Source: 'curve25519-dalek/src/backend/serial/scalar_mul/vartime_double_base.rs', lines 118:0-124:1 -/ def backend.serial.scalar_mul.vartime_double_base.dsm_step_b (t : backend.serial.curve_models.CompletedPoint) (table : window.NafLookupTable5 backend.serial.curve_models.ProjectiveNielsPoint) (d : Std.I8) : Result backend.serial.curve_models.CompletedPoint := do backend.serial.scalar_mul.vartime_double_base.dsm_step_p t table d /-- [curve25519_dalek::backend::serial::curve_models::{curve25519_dalek::backend::serial::curve_models::CompletedPoint}::as_projective]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 353:4-359:5 Visibility: public -/ def backend.serial.curve_models.CompletedPoint.as_projective (self : backend.serial.curve_models.CompletedPoint) : Result backend.serial.curve_models.ProjectivePoint := do let fe ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self.X self.T let fe1 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self.Y self.Z let fe2 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self.Z self.T ok { X := fe, Y := fe1, Z := fe2 } /-- [curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::ONE] Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 265:4-265:80 Visibility: public -/ @[global_simps, irreducible] def backend.serial.u64.field.FieldElement51.ONE : Result backend.serial.u64.field.FieldElement51 := backend.serial.u64.field.FieldElement51.from_limbs (Array.make 5#usize [ 1#u64, 0#u64, 0#u64, 0#u64, 0#u64 ]) /-- [curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::ZERO] Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 263:4-263:81 Visibility: public -/ @[global_simps, irreducible] def backend.serial.u64.field.FieldElement51.ZERO : Result backend.serial.u64.field.FieldElement51 := let a := Array.repeat 5#usize 0#u64 backend.serial.u64.field.FieldElement51.from_limbs a /-- [curve25519_dalek::backend::serial::curve_models::{impl curve25519_dalek::traits::Identity for curve25519_dalek::backend::serial::curve_models::ProjectivePoint}::identity]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 230:4-236:5 Visibility: public -/ def backend.serial.curve_models.ProjectivePoint.Insts.Curve25519_dalekTraitsIdentity.identity : Result backend.serial.curve_models.ProjectivePoint := do let fe ← backend.serial.u64.field.FieldElement51.ZERO let fe1 ← backend.serial.u64.field.FieldElement51.ONE ok { X := fe, Y := fe1, Z := fe1 } /-- [curve25519_dalek::backend::serial::scalar_mul::vartime_double_base::dsm_loop]: loop body 0: Source: 'curve25519-dalek/src/backend/serial/scalar_mul/vartime_double_base.rs', lines 72:4-79:5 -/ @[rust_loop_body] def backend.serial.scalar_mul.vartime_double_base.dsm_loop_loop.body (a_naf : Array Std.I8 256#usize) (b_naf : Array Std.I8 256#usize) (table_a : window.NafLookupTable5 backend.serial.curve_models.ProjectiveNielsPoint) (table_b : window.NafLookupTable5 backend.serial.curve_models.ProjectiveNielsPoint) (r : backend.serial.curve_models.ProjectivePoint) (j : Std.Usize) : Result (ControlFlow (backend.serial.curve_models.ProjectivePoint × Std.Usize) backend.serial.curve_models.ProjectivePoint) := do if j > 0#usize then let idx ← j - 1#usize let t0 ← backend.serial.curve_models.ProjectivePoint.double r let i ← Array.index_usize a_naf idx let t1 ← backend.serial.scalar_mul.vartime_double_base.dsm_step_p t0 table_a i let i1 ← Array.index_usize b_naf idx let t2 ← backend.serial.scalar_mul.vartime_double_base.dsm_step_b t1 table_b i1 let r1 ← backend.serial.curve_models.CompletedPoint.as_projective t2 ok (cont (r1, idx)) else ok (done r) /-- [curve25519_dalek::backend::serial::scalar_mul::vartime_double_base::dsm_loop]: loop 0: Source: 'curve25519-dalek/src/backend/serial/scalar_mul/vartime_double_base.rs', lines 72:4-79:5 -/ @[rust_loop] def backend.serial.scalar_mul.vartime_double_base.dsm_loop_loop (a_naf : Array Std.I8 256#usize) (b_naf : Array Std.I8 256#usize) (table_a : window.NafLookupTable5 backend.serial.curve_models.ProjectiveNielsPoint) (table_b : window.NafLookupTable5 backend.serial.curve_models.ProjectiveNielsPoint) (r : backend.serial.curve_models.ProjectivePoint) (j : Std.Usize) : Result backend.serial.curve_models.ProjectivePoint := do loop (fun (r1, j1) => backend.serial.scalar_mul.vartime_double_base.dsm_loop_loop.body a_naf b_naf table_a table_b r1 j1) (r, j) /-- [curve25519_dalek::backend::serial::scalar_mul::vartime_double_base::dsm_loop]: Source: 'curve25519-dalek/src/backend/serial/scalar_mul/vartime_double_base.rs', lines 63:0-81:1 -/ def backend.serial.scalar_mul.vartime_double_base.dsm_loop (i : Std.Usize) (a_naf : Array Std.I8 256#usize) (b_naf : Array Std.I8 256#usize) (table_a : window.NafLookupTable5 backend.serial.curve_models.ProjectiveNielsPoint) (table_b : window.NafLookupTable5 backend.serial.curve_models.ProjectiveNielsPoint) : Result backend.serial.curve_models.ProjectivePoint := do let r ← backend.serial.curve_models.ProjectivePoint.Insts.Curve25519_dalekTraitsIdentity.identity let j ← i + 1#usize backend.serial.scalar_mul.vartime_double_base.dsm_loop_loop a_naf b_naf table_a table_b r j /-- [curve25519_dalek::backend::serial::scalar_mul::vartime_double_base::dsm_top_index]: Source: 'curve25519-dalek/src/backend/serial/scalar_mul/vartime_double_base.rs', lines 29:0-37:1 -/ def backend.serial.scalar_mul.vartime_double_base.dsm_top_index (a_naf : Array Std.I8 256#usize) (b_naf : Array Std.I8 256#usize) : Result Std.Usize := do ok 255#usize /-- [curve25519_dalek::backend::serial::curve_models::{curve25519_dalek::backend::serial::curve_models::ProjectivePoint}::as_extended]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 338:4-345:5 Visibility: public -/ def backend.serial.curve_models.ProjectivePoint.as_extended (self : backend.serial.curve_models.ProjectivePoint) : Result edwards.EdwardsPoint := do let fe ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self.X self.Z let fe1 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self.Y self.Z let fe2 ← backend.serial.u64.field.FieldElement51.square self.Z let fe3 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self.X self.Y ok { X := fe, Y := fe1, Z := fe2, T := fe3 } /-- [curve25519_dalek::backend::serial::scalar_mul::vartime_double_base::mul]: Source: 'curve25519-dalek/src/backend/serial/scalar_mul/vartime_double_base.rs', lines 126:0-147:1 Visibility: public -/ def backend.serial.scalar_mul.vartime_double_base.mul (a : scalar.Scalar) (A : edwards.EdwardsPoint) (b : scalar.Scalar) : Result edwards.EdwardsPoint := do let a_naf ← scalar.Scalar.non_adjacent_form a 5#usize let b_naf ← scalar.Scalar.non_adjacent_form b 5#usize let i ← backend.serial.scalar_mul.vartime_double_base.dsm_top_index a_naf b_naf let table_A ← window.NafLookupTable5ProjectiveNielsPoint.Insts.CoreConvertFromSharedAEdwardsPoint.from A let ep ← backend.serial.u64.constants.ED25519_BASEPOINT_POINT let table_B ← window.NafLookupTable5ProjectiveNielsPoint.Insts.CoreConvertFromSharedAEdwardsPoint.from ep let r ← backend.serial.scalar_mul.vartime_double_base.dsm_loop i a_naf b_naf table_A table_B backend.serial.curve_models.ProjectivePoint.as_extended r /-- [curve25519_dalek::backend::vartime_double_base_mul]: Source: 'curve25519-dalek/src/backend/mod.rs', lines 241:0-251:1 Visibility: public -/ def backend.vartime_double_base_mul (a : scalar.Scalar) (A : edwards.EdwardsPoint) (b : scalar.Scalar) : Result edwards.EdwardsPoint := do let bk ← backend.get_selected_backend match bk with | backend.BackendKind.Avx2 => backend.vector.scalar_mul.vartime_double_base.spec_avx2.mul a A b | backend.BackendKind.Avx512 => backend.vector.scalar_mul.vartime_double_base.spec_avx512ifma_avx512vl.mul a A b | backend.BackendKind.Serial => backend.serial.scalar_mul.vartime_double_base.mul a A b /-- [curve25519_dalek::backend::serial::curve_models::{impl core::clone::Clone for curve25519_dalek::backend::serial::curve_models::ProjectivePoint}::clone]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 153:15-153:20 Visibility: public -/ def backend.serial.curve_models.ProjectivePoint.Insts.CoreCloneClone.clone (self : backend.serial.curve_models.ProjectivePoint) : Result backend.serial.curve_models.ProjectivePoint := do ok self /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl core::clone::Clone for curve25519_dalek::backend::serial::curve_models::ProjectivePoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 153:15-153:20 -/ @[reducible] def backend.serial.curve_models.ProjectivePoint.Insts.CoreCloneClone : core.clone.Clone backend.serial.curve_models.ProjectivePoint := { clone := backend.serial.curve_models.ProjectivePoint.Insts.CoreCloneClone.clone } /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl core::marker::Copy for curve25519_dalek::backend::serial::curve_models::ProjectivePoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 153:9-153:13 -/ @[reducible] def backend.serial.curve_models.ProjectivePoint.Insts.CoreMarkerCopy : core.marker.Copy backend.serial.curve_models.ProjectivePoint := { cloneInst := backend.serial.curve_models.ProjectivePoint.Insts.CoreCloneClone } /-- [curve25519_dalek::backend::serial::curve_models::{impl core::clone::Clone for curve25519_dalek::backend::serial::curve_models::CompletedPoint}::clone]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 167:15-167:20 Visibility: public -/ def backend.serial.curve_models.CompletedPoint.Insts.CoreCloneClone.clone (self : backend.serial.curve_models.CompletedPoint) : Result backend.serial.curve_models.CompletedPoint := do ok self /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl core::clone::Clone for curve25519_dalek::backend::serial::curve_models::CompletedPoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 167:15-167:20 -/ @[reducible] def backend.serial.curve_models.CompletedPoint.Insts.CoreCloneClone : core.clone.Clone backend.serial.curve_models.CompletedPoint := { clone := backend.serial.curve_models.CompletedPoint.Insts.CoreCloneClone.clone } /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl core::marker::Copy for curve25519_dalek::backend::serial::curve_models::CompletedPoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 167:9-167:13 -/ @[reducible] def backend.serial.curve_models.CompletedPoint.Insts.CoreMarkerCopy : core.marker.Copy backend.serial.curve_models.CompletedPoint := { cloneInst := backend.serial.curve_models.CompletedPoint.Insts.CoreCloneClone } /-- [curve25519_dalek::backend::serial::curve_models::{impl core::clone::Clone for curve25519_dalek::backend::serial::curve_models::AffineNielsPoint}::clone]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 182:15-182:20 Visibility: public -/ def backend.serial.curve_models.AffineNielsPoint.Insts.CoreCloneClone.clone (self : backend.serial.curve_models.AffineNielsPoint) : Result backend.serial.curve_models.AffineNielsPoint := do ok self /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl core::clone::Clone for curve25519_dalek::backend::serial::curve_models::AffineNielsPoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 182:15-182:20 -/ @[reducible] def backend.serial.curve_models.AffineNielsPoint.Insts.CoreCloneClone : core.clone.Clone backend.serial.curve_models.AffineNielsPoint := { clone := backend.serial.curve_models.AffineNielsPoint.Insts.CoreCloneClone.clone } /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl core::marker::Copy for curve25519_dalek::backend::serial::curve_models::AffineNielsPoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 182:9-182:13 -/ @[reducible] def backend.serial.curve_models.AffineNielsPoint.Insts.CoreMarkerCopy : core.marker.Copy backend.serial.curve_models.AffineNielsPoint := { cloneInst := backend.serial.curve_models.AffineNielsPoint.Insts.CoreCloneClone } /-- [curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::as_bytes]: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 368:4-450:5 Visibility: public -/ def backend.serial.u64.field.FieldElement51.as_bytes (self : backend.serial.u64.field.FieldElement51) : Result (Array Std.U8 32#usize) := do let fe ← backend.serial.u64.field.FieldElement51.reduce self let i ← Array.index_usize fe 0#usize let i1 ← i + 19#u64 let q ← i1 >>> 51#i32 let i2 ← Array.index_usize fe 1#usize let i3 ← i2 + q let q1 ← i3 >>> 51#i32 let i4 ← Array.index_usize fe 2#usize let i5 ← i4 + q1 let q2 ← i5 >>> 51#i32 let i6 ← Array.index_usize fe 3#usize let i7 ← i6 + q2 let q3 ← i7 >>> 51#i32 let i8 ← Array.index_usize fe 4#usize let i9 ← i8 + q3 let q4 ← i9 >>> 51#i32 let i10 ← 19#u64 * q4 let i11 ← i + i10 let limbs ← Array.update fe 0#usize i11 let i12 ← 1#u64 <<< 51#i32 let low_51_bit_mask ← i12 - 1#u64 let i13 ← Array.index_usize limbs 0#usize let i14 ← i13 >>> 51#i32 let i15 ← Array.index_usize limbs 1#usize let i16 ← i15 + i14 let limbs1 ← Array.update limbs 1#usize i16 let i17 ← Array.index_usize limbs1 0#usize let i18 ← lift (i17 &&& low_51_bit_mask) let limbs2 ← Array.update limbs1 0#usize i18 let i19 ← Array.index_usize limbs2 1#usize let i20 ← i19 >>> 51#i32 let i21 ← Array.index_usize limbs2 2#usize let i22 ← i21 + i20 let limbs3 ← Array.update limbs2 2#usize i22 let i23 ← Array.index_usize limbs3 1#usize let i24 ← lift (i23 &&& low_51_bit_mask) let limbs4 ← Array.update limbs3 1#usize i24 let i25 ← Array.index_usize limbs4 2#usize let i26 ← i25 >>> 51#i32 let i27 ← Array.index_usize limbs4 3#usize let i28 ← i27 + i26 let limbs5 ← Array.update limbs4 3#usize i28 let i29 ← Array.index_usize limbs5 2#usize let i30 ← lift (i29 &&& low_51_bit_mask) let limbs6 ← Array.update limbs5 2#usize i30 let i31 ← Array.index_usize limbs6 3#usize let i32 ← i31 >>> 51#i32 let i33 ← Array.index_usize limbs6 4#usize let i34 ← i33 + i32 let limbs7 ← Array.update limbs6 4#usize i34 let i35 ← Array.index_usize limbs7 3#usize let i36 ← lift (i35 &&& low_51_bit_mask) let limbs8 ← Array.update limbs7 3#usize i36 let i37 ← Array.index_usize limbs8 4#usize let i38 ← lift (i37 &&& low_51_bit_mask) let limbs9 ← Array.update limbs8 4#usize i38 let s := Array.repeat 32#usize 0#u8 let i39 ← Array.index_usize limbs9 0#usize let i40 ← lift (UScalar.cast .U8 i39) let s1 ← Array.update s 0#usize i40 let i41 ← i39 >>> 8#i32 let i42 ← lift (UScalar.cast .U8 i41) let s2 ← Array.update s1 1#usize i42 let i43 ← i39 >>> 16#i32 let i44 ← lift (UScalar.cast .U8 i43) let s3 ← Array.update s2 2#usize i44 let i45 ← i39 >>> 24#i32 let i46 ← lift (UScalar.cast .U8 i45) let s4 ← Array.update s3 3#usize i46 let i47 ← i39 >>> 32#i32 let i48 ← lift (UScalar.cast .U8 i47) let s5 ← Array.update s4 4#usize i48 let i49 ← i39 >>> 40#i32 let i50 ← lift (UScalar.cast .U8 i49) let s6 ← Array.update s5 5#usize i50 let i51 ← i39 >>> 48#i32 let i52 ← Array.index_usize limbs9 1#usize let i53 ← i52 <<< 3#i32 let i54 ← lift (i51 ||| i53) let i55 ← lift (UScalar.cast .U8 i54) let s7 ← Array.update s6 6#usize i55 let i56 ← i52 >>> 5#i32 let i57 ← lift (UScalar.cast .U8 i56) let s8 ← Array.update s7 7#usize i57 let i58 ← i52 >>> 13#i32 let i59 ← lift (UScalar.cast .U8 i58) let s9 ← Array.update s8 8#usize i59 let i60 ← i52 >>> 21#i32 let i61 ← lift (UScalar.cast .U8 i60) let s10 ← Array.update s9 9#usize i61 let i62 ← i52 >>> 29#i32 let i63 ← lift (UScalar.cast .U8 i62) let s11 ← Array.update s10 10#usize i63 let i64 ← i52 >>> 37#i32 let i65 ← lift (UScalar.cast .U8 i64) let s12 ← Array.update s11 11#usize i65 let i66 ← i52 >>> 45#i32 let i67 ← Array.index_usize limbs9 2#usize let i68 ← i67 <<< 6#i32 let i69 ← lift (i66 ||| i68) let i70 ← lift (UScalar.cast .U8 i69) let s13 ← Array.update s12 12#usize i70 let i71 ← i67 >>> 2#i32 let i72 ← lift (UScalar.cast .U8 i71) let s14 ← Array.update s13 13#usize i72 let i73 ← i67 >>> 10#i32 let i74 ← lift (UScalar.cast .U8 i73) let s15 ← Array.update s14 14#usize i74 let i75 ← i67 >>> 18#i32 let i76 ← lift (UScalar.cast .U8 i75) let s16 ← Array.update s15 15#usize i76 let i77 ← i67 >>> 26#i32 let i78 ← lift (UScalar.cast .U8 i77) let s17 ← Array.update s16 16#usize i78 let i79 ← i67 >>> 34#i32 let i80 ← lift (UScalar.cast .U8 i79) let s18 ← Array.update s17 17#usize i80 let i81 ← i67 >>> 42#i32 let i82 ← lift (UScalar.cast .U8 i81) let s19 ← Array.update s18 18#usize i82 let i83 ← i67 >>> 50#i32 let i84 ← Array.index_usize limbs9 3#usize let i85 ← i84 <<< 1#i32 let i86 ← lift (i83 ||| i85) let i87 ← lift (UScalar.cast .U8 i86) let s20 ← Array.update s19 19#usize i87 let i88 ← i84 >>> 7#i32 let i89 ← lift (UScalar.cast .U8 i88) let s21 ← Array.update s20 20#usize i89 let i90 ← i84 >>> 15#i32 let i91 ← lift (UScalar.cast .U8 i90) let s22 ← Array.update s21 21#usize i91 let i92 ← i84 >>> 23#i32 let i93 ← lift (UScalar.cast .U8 i92) let s23 ← Array.update s22 22#usize i93 let i94 ← i84 >>> 31#i32 let i95 ← lift (UScalar.cast .U8 i94) let s24 ← Array.update s23 23#usize i95 let i96 ← i84 >>> 39#i32 let i97 ← lift (UScalar.cast .U8 i96) let s25 ← Array.update s24 24#usize i97 let i98 ← i84 >>> 47#i32 let i99 ← Array.index_usize limbs9 4#usize let i100 ← i99 <<< 4#i32 let i101 ← lift (i98 ||| i100) let i102 ← lift (UScalar.cast .U8 i101) let s26 ← Array.update s25 25#usize i102 let i103 ← i99 >>> 4#i32 let i104 ← lift (UScalar.cast .U8 i103) let s27 ← Array.update s26 26#usize i104 let i105 ← i99 >>> 12#i32 let i106 ← lift (UScalar.cast .U8 i105) let s28 ← Array.update s27 27#usize i106 let i107 ← i99 >>> 20#i32 let i108 ← lift (UScalar.cast .U8 i107) let s29 ← Array.update s28 28#usize i108 let i109 ← i99 >>> 28#i32 let i110 ← lift (UScalar.cast .U8 i109) let s30 ← Array.update s29 29#usize i110 let i111 ← i99 >>> 36#i32 let i112 ← lift (UScalar.cast .U8 i111) let s31 ← Array.update s30 30#usize i112 let i113 ← i99 >>> 44#i32 let i114 ← lift (UScalar.cast .U8 i113) let s32 ← Array.update s31 31#usize i114 let i115 ← Array.index_usize s32 31#usize let i116 ← lift (i115 &&& 128#u8) massert (i116 = 0#u8) ok s32 /-- [curve25519_dalek::field::{impl subtle::ConstantTimeEq for curve25519_dalek::backend::serial::u64::field::FieldElement51}::ct_eq]: Source: 'curve25519-dalek/src/field.rs', lines 96:4-98:5 Visibility: public -/ def backend.serial.u64.field.FieldElement51.Insts.SubtleConstantTimeEq.ct_eq (self : backend.serial.u64.field.FieldElement51) (other : backend.serial.u64.field.FieldElement51) : Result subtle.Choice := do let a ← backend.serial.u64.field.FieldElement51.as_bytes self let s ← lift (Array.to_slice a) let a1 ← backend.serial.u64.field.FieldElement51.as_bytes other let s1 ← lift (Array.to_slice a1) Slice.Insts.SubtleConstantTimeEq.ct_eq U8.Insts.SubtleConstantTimeEq s s1 /-- [curve25519_dalek::field::{impl core::cmp::PartialEq for curve25519_dalek::backend::serial::u64::field::FieldElement51}::eq]: Source: 'curve25519-dalek/src/field.rs', lines 87:4-89:5 Visibility: public -/ def backend.serial.u64.field.FieldElement51.Insts.CoreCmpPartialEqFieldElement51.eq (self : backend.serial.u64.field.FieldElement51) (other : backend.serial.u64.field.FieldElement51) : Result Bool := do let c ← backend.serial.u64.field.FieldElement51.Insts.SubtleConstantTimeEq.ct_eq self other core.convert.IntoFrom.into Bool.Insts.CoreConvertFromChoice c /-- [curve25519_dalek::backend::serial::curve_models::{impl core::cmp::PartialEq for curve25519_dalek::backend::serial::curve_models::AffineNielsPoint}::eq]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 182:26-182:35 Visibility: public -/ def backend.serial.curve_models.AffineNielsPoint.Insts.CoreCmpPartialEqAffineNielsPoint.eq (self : backend.serial.curve_models.AffineNielsPoint) (other : backend.serial.curve_models.AffineNielsPoint) : Result Bool := do let b ← backend.serial.u64.field.FieldElement51.Insts.CoreCmpPartialEqFieldElement51.eq self.y_plus_x other.y_plus_x if b then let b1 ← backend.serial.u64.field.FieldElement51.Insts.CoreCmpPartialEqFieldElement51.eq self.y_minus_x other.y_minus_x if b1 then backend.serial.u64.field.FieldElement51.Insts.CoreCmpPartialEqFieldElement51.eq self.xy2d other.xy2d else ok false else ok false /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl core::cmp::PartialEq for curve25519_dalek::backend::serial::curve_models::AffineNielsPoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 182:26-182:35 -/ @[reducible] def backend.serial.curve_models.AffineNielsPoint.Insts.CoreCmpPartialEqAffineNielsPoint : core.cmp.PartialEq backend.serial.curve_models.AffineNielsPoint backend.serial.curve_models.AffineNielsPoint := { eq := backend.serial.curve_models.AffineNielsPoint.Insts.CoreCmpPartialEqAffineNielsPoint.eq } /-- [curve25519_dalek::backend::serial::curve_models::{impl core::cmp::Eq for curve25519_dalek::backend::serial::curve_models::AffineNielsPoint}::assert_fields_are_eq]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 182:22-182:24 Visibility: public -/ def backend.serial.curve_models.AffineNielsPoint.Insts.CoreCmpEq.assert_fields_are_eq (self : backend.serial.curve_models.AffineNielsPoint) : Result Unit := do ok () /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl core::cmp::Eq for curve25519_dalek::backend::serial::curve_models::AffineNielsPoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 182:22-182:24 -/ @[reducible] def backend.serial.curve_models.AffineNielsPoint.Insts.CoreCmpEq : core.cmp.Eq backend.serial.curve_models.AffineNielsPoint := { partialEqInst := backend.serial.curve_models.AffineNielsPoint.Insts.CoreCmpPartialEqAffineNielsPoint assert_fields_are_eq := backend.serial.curve_models.AffineNielsPoint.Insts.CoreCmpEq.assert_fields_are_eq } /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl core::marker::StructuralPartialEq for curve25519_dalek::backend::serial::curve_models::AffineNielsPoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 182:26-182:35 -/ @[reducible] def backend.serial.curve_models.AffineNielsPoint.Insts.CoreMarkerStructuralPartialEq : core.marker.StructuralPartialEq backend.serial.curve_models.AffineNielsPoint := { } /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl curve25519_dalek::traits::Identity for curve25519_dalek::backend::serial::curve_models::ProjectivePoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 229:0-237:1 -/ @[reducible] def backend.serial.curve_models.ProjectivePoint.Insts.Curve25519_dalekTraitsIdentity : traits.Identity backend.serial.curve_models.ProjectivePoint := { identity := backend.serial.curve_models.ProjectivePoint.Insts.Curve25519_dalekTraitsIdentity.identity } /-- [curve25519_dalek::backend::serial::curve_models::{impl curve25519_dalek::traits::Identity for curve25519_dalek::backend::serial::curve_models::ProjectiveNielsPoint}::identity]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 240:4-247:5 Visibility: public -/ def backend.serial.curve_models.ProjectiveNielsPoint.Insts.Curve25519_dalekTraitsIdentity.identity : Result backend.serial.curve_models.ProjectiveNielsPoint := do let fe ← backend.serial.u64.field.FieldElement51.ONE let fe1 ← backend.serial.u64.field.FieldElement51.ZERO ok { Y_plus_X := fe, Y_minus_X := fe, Z := fe, T2d := fe1 } /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl curve25519_dalek::traits::Identity for curve25519_dalek::backend::serial::curve_models::ProjectiveNielsPoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 239:0-248:1 -/ @[reducible] def backend.serial.curve_models.ProjectiveNielsPoint.Insts.Curve25519_dalekTraitsIdentity : traits.Identity backend.serial.curve_models.ProjectiveNielsPoint := { identity := backend.serial.curve_models.ProjectiveNielsPoint.Insts.Curve25519_dalekTraitsIdentity.identity } /-- [curve25519_dalek::backend::serial::curve_models::{impl core::default::Default for curve25519_dalek::backend::serial::curve_models::ProjectiveNielsPoint}::default]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 251:4-253:5 Visibility: public -/ def backend.serial.curve_models.ProjectiveNielsPoint.Insts.CoreDefaultDefault.default : Result backend.serial.curve_models.ProjectiveNielsPoint := do backend.serial.curve_models.ProjectiveNielsPoint.Insts.Curve25519_dalekTraitsIdentity.identity /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl core::default::Default for curve25519_dalek::backend::serial::curve_models::ProjectiveNielsPoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 250:0-254:1 -/ @[reducible] def backend.serial.curve_models.ProjectiveNielsPoint.Insts.CoreDefaultDefault : core.default.Default backend.serial.curve_models.ProjectiveNielsPoint := { default := backend.serial.curve_models.ProjectiveNielsPoint.Insts.CoreDefaultDefault.default } /-- [curve25519_dalek::backend::serial::curve_models::{impl curve25519_dalek::traits::Identity for curve25519_dalek::backend::serial::curve_models::AffineNielsPoint}::identity]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 257:4-263:5 Visibility: public -/ def backend.serial.curve_models.AffineNielsPoint.Insts.Curve25519_dalekTraitsIdentity.identity : Result backend.serial.curve_models.AffineNielsPoint := do let fe ← backend.serial.u64.field.FieldElement51.ONE let fe1 ← backend.serial.u64.field.FieldElement51.ZERO ok { y_plus_x := fe, y_minus_x := fe, xy2d := fe1 } /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl curve25519_dalek::traits::Identity for curve25519_dalek::backend::serial::curve_models::AffineNielsPoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 256:0-264:1 -/ @[reducible] def backend.serial.curve_models.AffineNielsPoint.Insts.Curve25519_dalekTraitsIdentity : traits.Identity backend.serial.curve_models.AffineNielsPoint := { identity := backend.serial.curve_models.AffineNielsPoint.Insts.Curve25519_dalekTraitsIdentity.identity } /-- [curve25519_dalek::backend::serial::curve_models::{impl core::default::Default for curve25519_dalek::backend::serial::curve_models::AffineNielsPoint}::default]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 267:4-269:5 Visibility: public -/ def backend.serial.curve_models.AffineNielsPoint.Insts.CoreDefaultDefault.default : Result backend.serial.curve_models.AffineNielsPoint := do backend.serial.curve_models.AffineNielsPoint.Insts.Curve25519_dalekTraitsIdentity.identity /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl core::default::Default for curve25519_dalek::backend::serial::curve_models::AffineNielsPoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 266:0-270:1 -/ @[reducible] def backend.serial.curve_models.AffineNielsPoint.Insts.CoreDefaultDefault : core.default.Default backend.serial.curve_models.AffineNielsPoint := { default := backend.serial.curve_models.AffineNielsPoint.Insts.CoreDefaultDefault.default } /-- [curve25519_dalek::backend::serial::u64::constants::EDWARDS_D] Source: 'curve25519-dalek/src/backend/serial/u64/constants.rs', lines 35:0-41:3 -/ @[global_simps, irreducible] def backend.serial.u64.constants.EDWARDS_D : Result backend.serial.u64.field.FieldElement51 := backend.serial.u64.field.FieldElement51.from_limbs (Array.make 5#usize [ 929955233495203#u64, 466365720129213#u64, 1662059464998953#u64, 2033849074728123#u64, 1442794654840575#u64 ]) /-- [curve25519_dalek::backend::serial::curve_models::{impl curve25519_dalek::traits::ValidityCheck for curve25519_dalek::backend::serial::curve_models::ProjectivePoint}::is_valid]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 277:4-288:5 -/ def backend.serial.curve_models.ProjectivePoint.Insts.Curve25519_dalekTraitsValidityCheck.is_valid (self : backend.serial.curve_models.ProjectivePoint) : Result Bool := do let XX ← backend.serial.u64.field.FieldElement51.square self.X let YY ← backend.serial.u64.field.FieldElement51.square self.Y let ZZ ← backend.serial.u64.field.FieldElement51.square self.Z let ZZZZ ← backend.serial.u64.field.FieldElement51.square ZZ let fe ← SharedAFieldElement51.Insts.CoreOpsArithSubSharedBFieldElement51FieldElement51.sub YY XX let lhs ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul fe ZZ let fe1 ← backend.serial.u64.constants.EDWARDS_D let fe2 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul XX YY let fe3 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul fe1 fe2 let rhs ← SharedAFieldElement51.Insts.CoreOpsArithAddSharedBFieldElement51FieldElement51.add ZZZZ fe3 backend.serial.u64.field.FieldElement51.Insts.CoreCmpPartialEqFieldElement51.eq lhs rhs /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl curve25519_dalek::traits::ValidityCheck for curve25519_dalek::backend::serial::curve_models::ProjectivePoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 276:0-289:1 -/ @[reducible] def backend.serial.curve_models.ProjectivePoint.Insts.Curve25519_dalekTraitsValidityCheck : traits.ValidityCheck backend.serial.curve_models.ProjectivePoint := { is_valid := backend.serial.curve_models.ProjectivePoint.Insts.Curve25519_dalekTraitsValidityCheck.is_valid } /-- [curve25519_dalek::backend::serial::u64::field::{impl subtle::ConditionallySelectable for curve25519_dalek::backend::serial::u64::field::FieldElement51}::conditional_assign]: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 248:4-254:5 Visibility: public -/ def backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_assign (self : backend.serial.u64.field.FieldElement51) (other : backend.serial.u64.field.FieldElement51) (choice : subtle.Choice) : Result backend.serial.u64.field.FieldElement51 := do let (i, index_mut_back) ← Array.index_mut_usize self 0#usize let i1 ← Array.index_usize other 0#usize let i2 ← U64.Insts.SubtleConditionallySelectable.conditional_assign i i1 choice let a := index_mut_back i2 let (i3, index_mut_back1) ← Array.index_mut_usize a 1#usize let i4 ← Array.index_usize other 1#usize let i5 ← U64.Insts.SubtleConditionallySelectable.conditional_assign i3 i4 choice let a1 := index_mut_back1 i5 let (i6, index_mut_back2) ← Array.index_mut_usize a1 2#usize let i7 ← Array.index_usize other 2#usize let i8 ← U64.Insts.SubtleConditionallySelectable.conditional_assign i6 i7 choice let a2 := index_mut_back2 i8 let (i9, index_mut_back3) ← Array.index_mut_usize a2 3#usize let i10 ← Array.index_usize other 3#usize let i11 ← U64.Insts.SubtleConditionallySelectable.conditional_assign i9 i10 choice let a3 := index_mut_back3 i11 let (i12, index_mut_back4) ← Array.index_mut_usize a3 4#usize let i13 ← Array.index_usize other 4#usize let i14 ← U64.Insts.SubtleConditionallySelectable.conditional_assign i12 i13 choice let a4 := index_mut_back4 i14 ok a4 /-- [curve25519_dalek::backend::serial::curve_models::{impl subtle::ConditionallySelectable for curve25519_dalek::backend::serial::curve_models::ProjectiveNielsPoint}::conditional_assign]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 305:4-310:5 Visibility: public -/ def backend.serial.curve_models.ProjectiveNielsPoint.Insts.SubtleConditionallySelectable.conditional_assign (self : backend.serial.curve_models.ProjectiveNielsPoint) (other : backend.serial.curve_models.ProjectiveNielsPoint) (choice : subtle.Choice) : Result backend.serial.curve_models.ProjectiveNielsPoint := do let fe ← backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_assign self.Y_plus_X other.Y_plus_X choice let fe1 ← backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_assign self.Y_minus_X other.Y_minus_X choice let fe2 ← backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_assign self.Z other.Z choice let fe3 ← backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_assign self.T2d other.T2d choice ok { Y_plus_X := fe, Y_minus_X := fe1, Z := fe2, T2d := fe3 } /-- [curve25519_dalek::backend::serial::u64::field::{impl subtle::ConditionallySelectable for curve25519_dalek::backend::serial::u64::field::FieldElement51}::conditional_select]: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 226:4-238:5 Visibility: public -/ def backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_select (a : backend.serial.u64.field.FieldElement51) (b : backend.serial.u64.field.FieldElement51) (choice : subtle.Choice) : Result backend.serial.u64.field.FieldElement51 := do let i ← Array.index_usize a 0#usize let i1 ← Array.index_usize b 0#usize let i2 ← U64.Insts.SubtleConditionallySelectable.conditional_select i i1 choice let i3 ← Array.index_usize a 1#usize let i4 ← Array.index_usize b 1#usize let i5 ← U64.Insts.SubtleConditionallySelectable.conditional_select i3 i4 choice let i6 ← Array.index_usize a 2#usize let i7 ← Array.index_usize b 2#usize let i8 ← U64.Insts.SubtleConditionallySelectable.conditional_select i6 i7 choice let i9 ← Array.index_usize a 3#usize let i10 ← Array.index_usize b 3#usize let i11 ← U64.Insts.SubtleConditionallySelectable.conditional_select i9 i10 choice let i12 ← Array.index_usize a 4#usize let i13 ← Array.index_usize b 4#usize let i14 ← U64.Insts.SubtleConditionallySelectable.conditional_select i12 i13 choice ok (Array.make 5#usize [ i2, i5, i8, i11, i14 ]) /-- [curve25519_dalek::backend::serial::curve_models::{impl subtle::ConditionallySelectable for curve25519_dalek::backend::serial::curve_models::ProjectiveNielsPoint}::conditional_select]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 296:4-303:5 Visibility: public -/ def backend.serial.curve_models.ProjectiveNielsPoint.Insts.SubtleConditionallySelectable.conditional_select (a : backend.serial.curve_models.ProjectiveNielsPoint) (b : backend.serial.curve_models.ProjectiveNielsPoint) (choice : subtle.Choice) : Result backend.serial.curve_models.ProjectiveNielsPoint := do let fe ← backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_select a.Y_plus_X b.Y_plus_X choice let fe1 ← backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_select a.Y_minus_X b.Y_minus_X choice let fe2 ← backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_select a.Z b.Z choice let fe3 ← backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_select a.T2d b.T2d choice ok { Y_plus_X := fe, Y_minus_X := fe1, Z := fe2, T2d := fe3 } /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl subtle::ConditionallySelectable for curve25519_dalek::backend::serial::curve_models::ProjectiveNielsPoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 295:0-311:1 -/ @[reducible] def backend.serial.curve_models.ProjectiveNielsPoint.Insts.SubtleConditionallySelectable : subtle.ConditionallySelectable backend.serial.curve_models.ProjectiveNielsPoint := { coremarkerCopyInst := backend.serial.curve_models.ProjectiveNielsPoint.Insts.CoreMarkerCopy conditional_select := backend.serial.curve_models.ProjectiveNielsPoint.Insts.SubtleConditionallySelectable.conditional_select conditional_assign := backend.serial.curve_models.ProjectiveNielsPoint.Insts.SubtleConditionallySelectable.conditional_assign conditional_swap := backend.serial.curve_models.ProjectiveNielsPoint.Insts.SubtleConditionallySelectable.conditional_swap } /-- [curve25519_dalek::backend::serial::curve_models::{impl subtle::ConditionallySelectable for curve25519_dalek::backend::serial::curve_models::AffineNielsPoint}::conditional_assign]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 322:4-326:5 Visibility: public -/ def backend.serial.curve_models.AffineNielsPoint.Insts.SubtleConditionallySelectable.conditional_assign (self : backend.serial.curve_models.AffineNielsPoint) (other : backend.serial.curve_models.AffineNielsPoint) (choice : subtle.Choice) : Result backend.serial.curve_models.AffineNielsPoint := do let fe ← backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_assign self.y_plus_x other.y_plus_x choice let fe1 ← backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_assign self.y_minus_x other.y_minus_x choice let fe2 ← backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_assign self.xy2d other.xy2d choice ok { y_plus_x := fe, y_minus_x := fe1, xy2d := fe2 } /-- [curve25519_dalek::backend::serial::curve_models::{impl subtle::ConditionallySelectable for curve25519_dalek::backend::serial::curve_models::AffineNielsPoint}::conditional_select]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 314:4-320:5 Visibility: public -/ def backend.serial.curve_models.AffineNielsPoint.Insts.SubtleConditionallySelectable.conditional_select (a : backend.serial.curve_models.AffineNielsPoint) (b : backend.serial.curve_models.AffineNielsPoint) (choice : subtle.Choice) : Result backend.serial.curve_models.AffineNielsPoint := do let fe ← backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_select a.y_plus_x b.y_plus_x choice let fe1 ← backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_select a.y_minus_x b.y_minus_x choice let fe2 ← backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_select a.xy2d b.xy2d choice ok { y_plus_x := fe, y_minus_x := fe1, xy2d := fe2 } /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl subtle::ConditionallySelectable for curve25519_dalek::backend::serial::curve_models::AffineNielsPoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 313:0-327:1 -/ @[reducible] def backend.serial.curve_models.AffineNielsPoint.Insts.SubtleConditionallySelectable : subtle.ConditionallySelectable backend.serial.curve_models.AffineNielsPoint := { coremarkerCopyInst := backend.serial.curve_models.AffineNielsPoint.Insts.CoreMarkerCopy conditional_select := backend.serial.curve_models.AffineNielsPoint.Insts.SubtleConditionallySelectable.conditional_select conditional_assign := backend.serial.curve_models.AffineNielsPoint.Insts.SubtleConditionallySelectable.conditional_assign conditional_swap := backend.serial.curve_models.AffineNielsPoint.Insts.SubtleConditionallySelectable.conditional_swap } /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl core::ops::arith::Add<&'b curve25519_dalek::backend::serial::curve_models::ProjectiveNielsPoint, curve25519_dalek::backend::serial::curve_models::CompletedPoint> for &'a curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 411:0-430:1 -/ @[reducible] def SharedAEdwardsPoint.Insts.CoreOpsArithAddSharedBProjectiveNielsPointCompletedPoint : core.ops.arith.Add edwards.EdwardsPoint backend.serial.curve_models.ProjectiveNielsPoint backend.serial.curve_models.CompletedPoint := { add := SharedAEdwardsPoint.Insts.CoreOpsArithAddSharedBProjectiveNielsPointCompletedPoint.add } /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl core::ops::arith::Sub<&'b curve25519_dalek::backend::serial::curve_models::ProjectiveNielsPoint, curve25519_dalek::backend::serial::curve_models::CompletedPoint> for &'a curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 433:0-452:1 -/ @[reducible] def SharedAEdwardsPoint.Insts.CoreOpsArithSubSharedBProjectiveNielsPointCompletedPoint : core.ops.arith.Sub edwards.EdwardsPoint backend.serial.curve_models.ProjectiveNielsPoint backend.serial.curve_models.CompletedPoint := { sub := SharedAEdwardsPoint.Insts.CoreOpsArithSubSharedBProjectiveNielsPointCompletedPoint.sub } /-- [curve25519_dalek::backend::serial::curve_models::{impl core::ops::arith::Add<&'b curve25519_dalek::backend::serial::curve_models::AffineNielsPoint, curve25519_dalek::backend::serial::curve_models::CompletedPoint> for &'a curve25519_dalek::edwards::EdwardsPoint}::add]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 458:4-472:5 Visibility: public -/ def SharedAEdwardsPoint.Insts.CoreOpsArithAddSharedBAffineNielsPointCompletedPoint.add (self : edwards.EdwardsPoint) (other : backend.serial.curve_models.AffineNielsPoint) : Result backend.serial.curve_models.CompletedPoint := do let Y_plus_X ← SharedAFieldElement51.Insts.CoreOpsArithAddSharedBFieldElement51FieldElement51.add self.Y self.X let Y_minus_X ← SharedAFieldElement51.Insts.CoreOpsArithSubSharedBFieldElement51FieldElement51.sub self.Y self.X let PP ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul Y_plus_X other.y_plus_x let MM ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul Y_minus_X other.y_minus_x let Txy2d ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self.T other.xy2d let Z2 ← SharedAFieldElement51.Insts.CoreOpsArithAddSharedBFieldElement51FieldElement51.add self.Z self.Z let fe ← SharedAFieldElement51.Insts.CoreOpsArithSubSharedBFieldElement51FieldElement51.sub PP MM let fe1 ← SharedAFieldElement51.Insts.CoreOpsArithAddSharedBFieldElement51FieldElement51.add PP MM let fe2 ← SharedAFieldElement51.Insts.CoreOpsArithAddSharedBFieldElement51FieldElement51.add Z2 Txy2d let fe3 ← SharedAFieldElement51.Insts.CoreOpsArithSubSharedBFieldElement51FieldElement51.sub Z2 Txy2d ok { X := fe, Y := fe1, Z := fe2, T := fe3 } /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl core::ops::arith::Add<&'b curve25519_dalek::backend::serial::curve_models::AffineNielsPoint, curve25519_dalek::backend::serial::curve_models::CompletedPoint> for &'a curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 455:0-473:1 -/ @[reducible] def SharedAEdwardsPoint.Insts.CoreOpsArithAddSharedBAffineNielsPointCompletedPoint : core.ops.arith.Add edwards.EdwardsPoint backend.serial.curve_models.AffineNielsPoint backend.serial.curve_models.CompletedPoint := { add := SharedAEdwardsPoint.Insts.CoreOpsArithAddSharedBAffineNielsPointCompletedPoint.add } /-- [curve25519_dalek::backend::serial::curve_models::{impl core::ops::arith::Sub<&'b curve25519_dalek::backend::serial::curve_models::AffineNielsPoint, curve25519_dalek::backend::serial::curve_models::CompletedPoint> for &'a curve25519_dalek::edwards::EdwardsPoint}::sub]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 479:4-493:5 Visibility: public -/ def SharedAEdwardsPoint.Insts.CoreOpsArithSubSharedBAffineNielsPointCompletedPoint.sub (self : edwards.EdwardsPoint) (other : backend.serial.curve_models.AffineNielsPoint) : Result backend.serial.curve_models.CompletedPoint := do let Y_plus_X ← SharedAFieldElement51.Insts.CoreOpsArithAddSharedBFieldElement51FieldElement51.add self.Y self.X let Y_minus_X ← SharedAFieldElement51.Insts.CoreOpsArithSubSharedBFieldElement51FieldElement51.sub self.Y self.X let PM ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul Y_plus_X other.y_minus_x let MP ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul Y_minus_X other.y_plus_x let Txy2d ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self.T other.xy2d let Z2 ← SharedAFieldElement51.Insts.CoreOpsArithAddSharedBFieldElement51FieldElement51.add self.Z self.Z let fe ← SharedAFieldElement51.Insts.CoreOpsArithSubSharedBFieldElement51FieldElement51.sub PM MP let fe1 ← SharedAFieldElement51.Insts.CoreOpsArithAddSharedBFieldElement51FieldElement51.add PM MP let fe2 ← SharedAFieldElement51.Insts.CoreOpsArithSubSharedBFieldElement51FieldElement51.sub Z2 Txy2d let fe3 ← SharedAFieldElement51.Insts.CoreOpsArithAddSharedBFieldElement51FieldElement51.add Z2 Txy2d ok { X := fe, Y := fe1, Z := fe2, T := fe3 } /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl core::ops::arith::Sub<&'b curve25519_dalek::backend::serial::curve_models::AffineNielsPoint, curve25519_dalek::backend::serial::curve_models::CompletedPoint> for &'a curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 476:0-494:1 -/ @[reducible] def SharedAEdwardsPoint.Insts.CoreOpsArithSubSharedBAffineNielsPointCompletedPoint : core.ops.arith.Sub edwards.EdwardsPoint backend.serial.curve_models.AffineNielsPoint backend.serial.curve_models.CompletedPoint := { sub := SharedAEdwardsPoint.Insts.CoreOpsArithSubSharedBAffineNielsPointCompletedPoint.sub } /-- [curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::negate]: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 276:4-286:5 Visibility: public -/ def backend.serial.u64.field.FieldElement51.negate (self : backend.serial.u64.field.FieldElement51) : Result backend.serial.u64.field.FieldElement51 := do let i ← Array.index_usize self 0#usize let i1 ← 36028797018963664#u64 - i let i2 ← Array.index_usize self 1#usize let i3 ← 36028797018963952#u64 - i2 let i4 ← Array.index_usize self 2#usize let i5 ← 36028797018963952#u64 - i4 let i6 ← Array.index_usize self 3#usize let i7 ← 36028797018963952#u64 - i6 let i8 ← Array.index_usize self 4#usize let i9 ← 36028797018963952#u64 - i8 let neg ← backend.serial.u64.field.FieldElement51.reduce (Array.make 5#usize [ i1, i3, i5, i7, i9 ]) ok neg /-- [curve25519_dalek::backend::serial::u64::field::{impl core::ops::arith::Neg for &'a curve25519_dalek::backend::serial::u64::field::FieldElement51}::neg]: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 218:4-222:5 Visibility: public -/ def SharedAFieldElement51.Insts.CoreOpsArithNegFieldElement51.neg (self : backend.serial.u64.field.FieldElement51) : Result backend.serial.u64.field.FieldElement51 := do backend.serial.u64.field.FieldElement51.negate self /-- [curve25519_dalek::backend::serial::curve_models::{impl core::ops::arith::Neg for &'a curve25519_dalek::backend::serial::curve_models::ProjectiveNielsPoint}::neg]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 503:4-510:5 Visibility: public -/ def SharedAProjectiveNielsPoint.Insts.CoreOpsArithNegProjectiveNielsPoint.neg (self : backend.serial.curve_models.ProjectiveNielsPoint) : Result backend.serial.curve_models.ProjectiveNielsPoint := do let fe ← SharedAFieldElement51.Insts.CoreOpsArithNegFieldElement51.neg self.T2d ok { self with Y_plus_X := self.Y_minus_X, Y_minus_X := self.Y_plus_X, T2d := fe } /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl core::ops::arith::Neg for &'a curve25519_dalek::backend::serial::curve_models::ProjectiveNielsPoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 500:0-511:1 -/ @[reducible] def SharedAProjectiveNielsPoint.Insts.CoreOpsArithNegProjectiveNielsPoint : core.ops.arith.Neg backend.serial.curve_models.ProjectiveNielsPoint backend.serial.curve_models.ProjectiveNielsPoint := { neg := SharedAProjectiveNielsPoint.Insts.CoreOpsArithNegProjectiveNielsPoint.neg } /-- [curve25519_dalek::backend::serial::curve_models::{impl core::ops::arith::Neg for &'a curve25519_dalek::backend::serial::curve_models::AffineNielsPoint}::neg]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 516:4-522:5 Visibility: public -/ def SharedAAffineNielsPoint.Insts.CoreOpsArithNegAffineNielsPoint.neg (self : backend.serial.curve_models.AffineNielsPoint) : Result backend.serial.curve_models.AffineNielsPoint := do let fe ← SharedAFieldElement51.Insts.CoreOpsArithNegFieldElement51.neg self.xy2d ok { y_plus_x := self.y_minus_x, y_minus_x := self.y_plus_x, xy2d := fe } /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl core::ops::arith::Neg for &'a curve25519_dalek::backend::serial::curve_models::AffineNielsPoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 513:0-523:1 -/ @[reducible] def SharedAAffineNielsPoint.Insts.CoreOpsArithNegAffineNielsPoint : core.ops.arith.Neg backend.serial.curve_models.AffineNielsPoint backend.serial.curve_models.AffineNielsPoint := { neg := SharedAAffineNielsPoint.Insts.CoreOpsArithNegAffineNielsPoint.neg } /-- [curve25519_dalek::backend::serial::u64::field::{impl core::fmt::Debug for curve25519_dalek::backend::serial::u64::field::FieldElement51}::fmt]: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 46:4-48:5 Visibility: public -/ def backend.serial.u64.field.FieldElement51.Insts.CoreFmtDebug.fmt (self : backend.serial.u64.field.FieldElement51) (f : core.fmt.Formatter) : Result ((core.result.Result Unit core.fmt.Error) × core.fmt.Formatter) := do let args ← core.array.Array.index (core.ops.index.IndexSlice (core.ops.range.RangeFull.Insts.CoreSliceIndexSliceIndexSliceSlice Std.U64)) self () let a ← core.fmt.rt.Argument.new_debug (core.fmt.DebugShared (Slice.Insts.CoreFmtDebug core.fmt.DebugU64)) args let a1 ← core.fmt.Arguments.new (Array.make 20#usize [ 15#u8, 70#u8, 105#u8, 101#u8, 108#u8, 100#u8, 69#u8, 108#u8, 101#u8, 109#u8, 101#u8, 110#u8, 116#u8, 53#u8, 49#u8, 40#u8, 192#u8, 1#u8, 41#u8, 0#u8 ]) (Array.make 1#usize [ a ]) core.fmt.Formatter.write_fmt f a1 /-- Trait implementation: [curve25519_dalek::backend::serial::u64::field::{impl core::fmt::Debug for curve25519_dalek::backend::serial::u64::field::FieldElement51}] Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 45:0-49:1 -/ @[reducible] def backend.serial.u64.field.FieldElement51.Insts.CoreFmtDebug : core.fmt.Debug backend.serial.u64.field.FieldElement51 := { fmt := backend.serial.u64.field.FieldElement51.Insts.CoreFmtDebug.fmt } /-- [curve25519_dalek::backend::serial::curve_models::{impl core::fmt::Debug for curve25519_dalek::backend::serial::curve_models::ProjectivePoint}::fmt]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 530:4-536:5 Visibility: public -/ def backend.serial.curve_models.ProjectivePoint.Insts.CoreFmtDebug.fmt (self : backend.serial.curve_models.ProjectivePoint) (f : core.fmt.Formatter) : Result ((core.result.Result Unit core.fmt.Error) × core.fmt.Formatter) := do let a ← core.fmt.rt.Argument.new_debug (core.fmt.DebugShared backend.serial.u64.field.FieldElement51.Insts.CoreFmtDebug) self.X let a1 ← core.fmt.rt.Argument.new_debug (core.fmt.DebugShared backend.serial.u64.field.FieldElement51.Insts.CoreFmtDebug) self.Y let a2 ← core.fmt.rt.Argument.new_debug (core.fmt.DebugShared backend.serial.u64.field.FieldElement51.Insts.CoreFmtDebug) self.Z let a3 ← core.fmt.Arguments.new (Array.make 43#usize [ 21#u8, 80#u8, 114#u8, 111#u8, 106#u8, 101#u8, 99#u8, 116#u8, 105#u8, 118#u8, 101#u8, 80#u8, 111#u8, 105#u8, 110#u8, 116#u8, 123#u8, 10#u8, 9#u8, 88#u8, 58#u8, 32#u8, 192#u8, 6#u8, 44#u8, 10#u8, 9#u8, 89#u8, 58#u8, 32#u8, 192#u8, 6#u8, 44#u8, 10#u8, 9#u8, 90#u8, 58#u8, 32#u8, 192#u8, 2#u8, 10#u8, 125#u8, 0#u8 ]) (Array.make 3#usize [ a, a1, a2 ]) core.fmt.Formatter.write_fmt f a3 /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl core::fmt::Debug for curve25519_dalek::backend::serial::curve_models::ProjectivePoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 529:0-537:1 -/ @[reducible] def backend.serial.curve_models.ProjectivePoint.Insts.CoreFmtDebug : core.fmt.Debug backend.serial.curve_models.ProjectivePoint := { fmt := backend.serial.curve_models.ProjectivePoint.Insts.CoreFmtDebug.fmt } /-- [curve25519_dalek::backend::serial::curve_models::{impl core::fmt::Debug for curve25519_dalek::backend::serial::curve_models::CompletedPoint}::fmt]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 540:4-546:5 Visibility: public -/ def backend.serial.curve_models.CompletedPoint.Insts.CoreFmtDebug.fmt (self : backend.serial.curve_models.CompletedPoint) (f : core.fmt.Formatter) : Result ((core.result.Result Unit core.fmt.Error) × core.fmt.Formatter) := do let a ← core.fmt.rt.Argument.new_debug (core.fmt.DebugShared backend.serial.u64.field.FieldElement51.Insts.CoreFmtDebug) self.X let a1 ← core.fmt.rt.Argument.new_debug (core.fmt.DebugShared backend.serial.u64.field.FieldElement51.Insts.CoreFmtDebug) self.Y let a2 ← core.fmt.rt.Argument.new_debug (core.fmt.DebugShared backend.serial.u64.field.FieldElement51.Insts.CoreFmtDebug) self.Z let a3 ← core.fmt.rt.Argument.new_debug (core.fmt.DebugShared backend.serial.u64.field.FieldElement51.Insts.CoreFmtDebug) self.T let a4 ← core.fmt.Arguments.new (Array.make 50#usize [ 20#u8, 67#u8, 111#u8, 109#u8, 112#u8, 108#u8, 101#u8, 116#u8, 101#u8, 100#u8, 80#u8, 111#u8, 105#u8, 110#u8, 116#u8, 123#u8, 10#u8, 9#u8, 88#u8, 58#u8, 32#u8, 192#u8, 6#u8, 44#u8, 10#u8, 9#u8, 89#u8, 58#u8, 32#u8, 192#u8, 6#u8, 44#u8, 10#u8, 9#u8, 90#u8, 58#u8, 32#u8, 192#u8, 6#u8, 44#u8, 10#u8, 9#u8, 84#u8, 58#u8, 32#u8, 192#u8, 2#u8, 10#u8, 125#u8, 0#u8 ]) (Array.make 4#usize [ a, a1, a2, a3 ]) core.fmt.Formatter.write_fmt f a4 /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl core::fmt::Debug for curve25519_dalek::backend::serial::curve_models::CompletedPoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 539:0-547:1 -/ @[reducible] def backend.serial.curve_models.CompletedPoint.Insts.CoreFmtDebug : core.fmt.Debug backend.serial.curve_models.CompletedPoint := { fmt := backend.serial.curve_models.CompletedPoint.Insts.CoreFmtDebug.fmt } /-- [curve25519_dalek::backend::serial::curve_models::{impl core::fmt::Debug for curve25519_dalek::backend::serial::curve_models::AffineNielsPoint}::fmt]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 550:4-556:5 Visibility: public -/ def backend.serial.curve_models.AffineNielsPoint.Insts.CoreFmtDebug.fmt (self : backend.serial.curve_models.AffineNielsPoint) (f : core.fmt.Formatter) : Result ((core.result.Result Unit core.fmt.Error) × core.fmt.Formatter) := do let a ← core.fmt.rt.Argument.new_debug (core.fmt.DebugShared backend.serial.u64.field.FieldElement51.Insts.CoreFmtDebug) self.y_plus_x let a1 ← core.fmt.rt.Argument.new_debug (core.fmt.DebugShared backend.serial.u64.field.FieldElement51.Insts.CoreFmtDebug) self.y_minus_x let a2 ← core.fmt.rt.Argument.new_debug (core.fmt.DebugShared backend.serial.u64.field.FieldElement51.Insts.CoreFmtDebug) self.xy2d let a3 ← core.fmt.Arguments.new (Array.make 62#usize [ 29#u8, 65#u8, 102#u8, 102#u8, 105#u8, 110#u8, 101#u8, 78#u8, 105#u8, 101#u8, 108#u8, 115#u8, 80#u8, 111#u8, 105#u8, 110#u8, 116#u8, 123#u8, 10#u8, 9#u8, 121#u8, 95#u8, 112#u8, 108#u8, 117#u8, 115#u8, 95#u8, 120#u8, 58#u8, 32#u8, 192#u8, 14#u8, 44#u8, 10#u8, 9#u8, 121#u8, 95#u8, 109#u8, 105#u8, 110#u8, 117#u8, 115#u8, 95#u8, 120#u8, 58#u8, 32#u8, 192#u8, 9#u8, 44#u8, 10#u8, 9#u8, 120#u8, 121#u8, 50#u8, 100#u8, 58#u8, 32#u8, 192#u8, 2#u8, 10#u8, 125#u8, 0#u8 ]) (Array.make 3#usize [ a, a1, a2 ]) core.fmt.Formatter.write_fmt f a3 /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl core::fmt::Debug for curve25519_dalek::backend::serial::curve_models::AffineNielsPoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 549:0-557:1 -/ @[reducible] def backend.serial.curve_models.AffineNielsPoint.Insts.CoreFmtDebug : core.fmt.Debug backend.serial.curve_models.AffineNielsPoint := { fmt := backend.serial.curve_models.AffineNielsPoint.Insts.CoreFmtDebug.fmt } /-- [curve25519_dalek::backend::serial::curve_models::{impl core::fmt::Debug for curve25519_dalek::backend::serial::curve_models::ProjectiveNielsPoint}::fmt]: Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 560:4-563:5 Visibility: public -/ def backend.serial.curve_models.ProjectiveNielsPoint.Insts.CoreFmtDebug.fmt (self : backend.serial.curve_models.ProjectiveNielsPoint) (f : core.fmt.Formatter) : Result ((core.result.Result Unit core.fmt.Error) × core.fmt.Formatter) := do let a ← core.fmt.rt.Argument.new_debug (core.fmt.DebugShared backend.serial.u64.field.FieldElement51.Insts.CoreFmtDebug) self.Y_plus_X let a1 ← core.fmt.rt.Argument.new_debug (core.fmt.DebugShared backend.serial.u64.field.FieldElement51.Insts.CoreFmtDebug) self.Y_minus_X let a2 ← core.fmt.rt.Argument.new_debug (core.fmt.DebugShared backend.serial.u64.field.FieldElement51.Insts.CoreFmtDebug) self.Z let a3 ← core.fmt.rt.Argument.new_debug (core.fmt.DebugShared backend.serial.u64.field.FieldElement51.Insts.CoreFmtDebug) self.T2d let a4 ← core.fmt.Arguments.new (Array.make 73#usize [ 33#u8, 80#u8, 114#u8, 111#u8, 106#u8, 101#u8, 99#u8, 116#u8, 105#u8, 118#u8, 101#u8, 78#u8, 105#u8, 101#u8, 108#u8, 115#u8, 80#u8, 111#u8, 105#u8, 110#u8, 116#u8, 123#u8, 10#u8, 9#u8, 89#u8, 95#u8, 112#u8, 108#u8, 117#u8, 115#u8, 95#u8, 88#u8, 58#u8, 32#u8, 192#u8, 14#u8, 44#u8, 10#u8, 9#u8, 89#u8, 95#u8, 109#u8, 105#u8, 110#u8, 117#u8, 115#u8, 95#u8, 88#u8, 58#u8, 32#u8, 192#u8, 6#u8, 44#u8, 10#u8, 9#u8, 90#u8, 58#u8, 32#u8, 192#u8, 8#u8, 44#u8, 10#u8, 9#u8, 84#u8, 50#u8, 100#u8, 58#u8, 32#u8, 192#u8, 2#u8, 10#u8, 125#u8, 0#u8 ]) (Array.make 4#usize [ a, a1, a2, a3 ]) core.fmt.Formatter.write_fmt f a4 /-- Trait implementation: [curve25519_dalek::backend::serial::curve_models::{impl core::fmt::Debug for curve25519_dalek::backend::serial::curve_models::ProjectiveNielsPoint}] Source: 'curve25519-dalek/src/backend/serial/curve_models/mod.rs', lines 559:0-564:1 -/ @[reducible] def backend.serial.curve_models.ProjectiveNielsPoint.Insts.CoreFmtDebug : core.fmt.Debug backend.serial.curve_models.ProjectiveNielsPoint := { fmt := backend.serial.curve_models.ProjectiveNielsPoint.Insts.CoreFmtDebug.fmt } /-- [curve25519_dalek::backend::serial::u64::constants::SQRT_M1] Source: 'curve25519-dalek/src/backend/serial/u64/constants.rs', lines 89:0-95:3 -/ @[global_simps, irreducible] def backend.serial.u64.constants.SQRT_M1 : Result backend.serial.u64.field.FieldElement51 := backend.serial.u64.field.FieldElement51.from_limbs (Array.make 5#usize [ 1718705420411056#u64, 234908883556509#u64, 2233514472574048#u64, 2117202627021982#u64, 765476049583133#u64 ]) /-- [curve25519_dalek::backend::serial::u64::field::{impl core::clone::Clone for curve25519_dalek::backend::serial::u64::field::FieldElement51}::clone]: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 42:15-42:20 Visibility: public -/ def backend.serial.u64.field.FieldElement51.Insts.CoreCloneClone.clone (self : backend.serial.u64.field.FieldElement51) : Result backend.serial.u64.field.FieldElement51 := do ok self /-- Trait implementation: [curve25519_dalek::backend::serial::u64::field::{impl core::clone::Clone for curve25519_dalek::backend::serial::u64::field::FieldElement51}] Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 42:15-42:20 -/ @[reducible] def backend.serial.u64.field.FieldElement51.Insts.CoreCloneClone : core.clone.Clone backend.serial.u64.field.FieldElement51 := { clone := backend.serial.u64.field.FieldElement51.Insts.CoreCloneClone.clone } /-- Trait implementation: [curve25519_dalek::backend::serial::u64::field::{impl core::marker::Copy for curve25519_dalek::backend::serial::u64::field::FieldElement51}] Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 42:9-42:13 -/ @[reducible] def backend.serial.u64.field.FieldElement51.Insts.CoreMarkerCopy : core.marker.Copy backend.serial.u64.field.FieldElement51 := { cloneInst := backend.serial.u64.field.FieldElement51.Insts.CoreCloneClone } /-- Trait implementation: [curve25519_dalek::backend::serial::u64::field::{impl core::ops::arith::AddAssign<&'b curve25519_dalek::backend::serial::u64::field::FieldElement51> for curve25519_dalek::backend::serial::u64::field::FieldElement51}] Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 58:0-64:1 -/ @[reducible] def backend.serial.u64.field.FieldElement51.Insts.CoreOpsArithAddAssignSharedBFieldElement51 : core.ops.arith.AddAssign backend.serial.u64.field.FieldElement51 backend.serial.u64.field.FieldElement51 := { add_assign := backend.serial.u64.field.FieldElement51.Insts.CoreOpsArithAddAssignSharedBFieldElement51.add_assign } /-- Trait implementation: [curve25519_dalek::backend::serial::u64::field::{impl core::ops::arith::Add<&'b curve25519_dalek::backend::serial::u64::field::FieldElement51, curve25519_dalek::backend::serial::u64::field::FieldElement51> for &'a curve25519_dalek::backend::serial::u64::field::FieldElement51}] Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 66:0-73:1 -/ @[reducible] def SharedAFieldElement51.Insts.CoreOpsArithAddSharedBFieldElement51FieldElement51 : core.ops.arith.Add backend.serial.u64.field.FieldElement51 backend.serial.u64.field.FieldElement51 backend.serial.u64.field.FieldElement51 := { add := SharedAFieldElement51.Insts.CoreOpsArithAddSharedBFieldElement51FieldElement51.add } /-- [curve25519_dalek::backend::serial::u64::field::{impl core::ops::arith::SubAssign<&'b curve25519_dalek::backend::serial::u64::field::FieldElement51> for curve25519_dalek::backend::serial::u64::field::FieldElement51}::sub_assign]: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 76:4-79:5 Visibility: public -/ def backend.serial.u64.field.FieldElement51.Insts.CoreOpsArithSubAssignSharedBFieldElement51.sub_assign (self : backend.serial.u64.field.FieldElement51) (_rhs : backend.serial.u64.field.FieldElement51) : Result backend.serial.u64.field.FieldElement51 := do let result ← SharedAFieldElement51.Insts.CoreOpsArithSubSharedBFieldElement51FieldElement51.sub self _rhs ok result /-- Trait implementation: [curve25519_dalek::backend::serial::u64::field::{impl core::ops::arith::SubAssign<&'b curve25519_dalek::backend::serial::u64::field::FieldElement51> for curve25519_dalek::backend::serial::u64::field::FieldElement51}] Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 75:0-80:1 -/ @[reducible] def backend.serial.u64.field.FieldElement51.Insts.CoreOpsArithSubAssignSharedBFieldElement51 : core.ops.arith.SubAssign backend.serial.u64.field.FieldElement51 backend.serial.u64.field.FieldElement51 := { sub_assign := backend.serial.u64.field.FieldElement51.Insts.CoreOpsArithSubAssignSharedBFieldElement51.sub_assign } /-- Trait implementation: [curve25519_dalek::backend::serial::u64::field::{impl core::ops::arith::Sub<&'b curve25519_dalek::backend::serial::u64::field::FieldElement51, curve25519_dalek::backend::serial::u64::field::FieldElement51> for &'a curve25519_dalek::backend::serial::u64::field::FieldElement51}] Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 82:0-102:1 -/ @[reducible] def SharedAFieldElement51.Insts.CoreOpsArithSubSharedBFieldElement51FieldElement51 : core.ops.arith.Sub backend.serial.u64.field.FieldElement51 backend.serial.u64.field.FieldElement51 backend.serial.u64.field.FieldElement51 := { sub := SharedAFieldElement51.Insts.CoreOpsArithSubSharedBFieldElement51FieldElement51.sub } /-- [curve25519_dalek::backend::serial::u64::field::{impl core::ops::arith::MulAssign<&'b curve25519_dalek::backend::serial::u64::field::FieldElement51> for curve25519_dalek::backend::serial::u64::field::FieldElement51}::mul_assign]: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 105:4-108:5 Visibility: public -/ def backend.serial.u64.field.FieldElement51.Insts.CoreOpsArithMulAssignSharedBFieldElement51.mul_assign (self : backend.serial.u64.field.FieldElement51) (_rhs : backend.serial.u64.field.FieldElement51) : Result backend.serial.u64.field.FieldElement51 := do let result ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self _rhs ok result /-- Trait implementation: [curve25519_dalek::backend::serial::u64::field::{impl core::ops::arith::MulAssign<&'b curve25519_dalek::backend::serial::u64::field::FieldElement51> for curve25519_dalek::backend::serial::u64::field::FieldElement51}] Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 104:0-109:1 -/ @[reducible] def backend.serial.u64.field.FieldElement51.Insts.CoreOpsArithMulAssignSharedBFieldElement51 : core.ops.arith.MulAssign backend.serial.u64.field.FieldElement51 backend.serial.u64.field.FieldElement51 := { mul_assign := backend.serial.u64.field.FieldElement51.Insts.CoreOpsArithMulAssignSharedBFieldElement51.mul_assign } /-- Trait implementation: [curve25519_dalek::backend::serial::u64::field::{impl core::ops::arith::Mul<&'b curve25519_dalek::backend::serial::u64::field::FieldElement51, curve25519_dalek::backend::serial::u64::field::FieldElement51> for &'a curve25519_dalek::backend::serial::u64::field::FieldElement51}] Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 111:0-214:1 -/ @[reducible] def SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51 : core.ops.arith.Mul backend.serial.u64.field.FieldElement51 backend.serial.u64.field.FieldElement51 backend.serial.u64.field.FieldElement51 := { mul := SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul } /-- Trait implementation: [curve25519_dalek::backend::serial::u64::field::{impl core::ops::arith::Neg for &'a curve25519_dalek::backend::serial::u64::field::FieldElement51}] Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 216:0-223:1 -/ @[reducible] def SharedAFieldElement51.Insts.CoreOpsArithNegFieldElement51 : core.ops.arith.Neg backend.serial.u64.field.FieldElement51 backend.serial.u64.field.FieldElement51 := { neg := SharedAFieldElement51.Insts.CoreOpsArithNegFieldElement51.neg } /-- [curve25519_dalek::backend::serial::u64::field::{impl subtle::ConditionallySelectable for curve25519_dalek::backend::serial::u64::field::FieldElement51}::conditional_swap]: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 240:4-246:5 Visibility: public -/ def backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_swap (a : backend.serial.u64.field.FieldElement51) (b : backend.serial.u64.field.FieldElement51) (choice : subtle.Choice) : Result (backend.serial.u64.field.FieldElement51 × backend.serial.u64.field.FieldElement51) := do let (i, index_mut_back) ← Array.index_mut_usize a 0#usize let (i1, index_mut_back1) ← Array.index_mut_usize b 0#usize let (i2, i3) ← U64.Insts.SubtleConditionallySelectable.conditional_swap i i1 choice let a1 := index_mut_back i2 let (i4, index_mut_back2) ← Array.index_mut_usize a1 1#usize let a2 := index_mut_back1 i3 let (i5, index_mut_back3) ← Array.index_mut_usize a2 1#usize let (i6, i7) ← U64.Insts.SubtleConditionallySelectable.conditional_swap i4 i5 choice let a3 := index_mut_back2 i6 let (i8, index_mut_back4) ← Array.index_mut_usize a3 2#usize let a4 := index_mut_back3 i7 let (i9, index_mut_back5) ← Array.index_mut_usize a4 2#usize let (i10, i11) ← U64.Insts.SubtleConditionallySelectable.conditional_swap i8 i9 choice let a5 := index_mut_back4 i10 let (i12, index_mut_back6) ← Array.index_mut_usize a5 3#usize let a6 := index_mut_back5 i11 let (i13, index_mut_back7) ← Array.index_mut_usize a6 3#usize let (i14, i15) ← U64.Insts.SubtleConditionallySelectable.conditional_swap i12 i13 choice let a7 := index_mut_back6 i14 let (i16, index_mut_back8) ← Array.index_mut_usize a7 4#usize let a8 := index_mut_back7 i15 let (i17, index_mut_back9) ← Array.index_mut_usize a8 4#usize let (i18, i19) ← U64.Insts.SubtleConditionallySelectable.conditional_swap i16 i17 choice let a9 := index_mut_back8 i18 let a10 := index_mut_back9 i19 ok (a9, a10) /-- Trait implementation: [curve25519_dalek::backend::serial::u64::field::{impl subtle::ConditionallySelectable for curve25519_dalek::backend::serial::u64::field::FieldElement51}] Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 225:0-255:1 -/ @[reducible] def backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable : subtle.ConditionallySelectable backend.serial.u64.field.FieldElement51 := { coremarkerCopyInst := backend.serial.u64.field.FieldElement51.Insts.CoreMarkerCopy conditional_select := backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_select conditional_assign := backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_assign conditional_swap := backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_swap } /-- [curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::MINUS_ONE] Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 267:4-273:7 Visibility: public -/ @[global_simps, irreducible] def backend.serial.u64.field.FieldElement51.MINUS_ONE : Result backend.serial.u64.field.FieldElement51 := backend.serial.u64.field.FieldElement51.from_limbs (Array.make 5#usize [ 2251799813685228#u64, 2251799813685247#u64, 2251799813685247#u64, 2251799813685247#u64, 2251799813685247#u64 ]) /-- [curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::from_bytes::{impl core::ops::function::Fn<(&'_ [u8],), u64> for curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::from_bytes::closure}::call]: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 339:20-348:9 -/ def backend.serial.u64.field.FieldElement51.from_bytes.closure.Insts.CoreOpsFunctionFnTupleSharedSliceU8U64.call (c : backend.serial.u64.field.FieldElement51.from_bytes.closure) (tupled_args : Slice Std.U8) : Result Std.U64 := do let i ← Slice.index_usize tupled_args 0#usize let i1 ← lift (UScalar.cast .U64 i) let i2 ← Slice.index_usize tupled_args 1#usize let i3 ← lift (UScalar.cast .U64 i2) let i4 ← i3 <<< 8#i32 let i5 ← lift (i1 ||| i4) let i6 ← Slice.index_usize tupled_args 2#usize let i7 ← lift (UScalar.cast .U64 i6) let i8 ← i7 <<< 16#i32 let i9 ← lift (i5 ||| i8) let i10 ← Slice.index_usize tupled_args 3#usize let i11 ← lift (UScalar.cast .U64 i10) let i12 ← i11 <<< 24#i32 let i13 ← lift (i9 ||| i12) let i14 ← Slice.index_usize tupled_args 4#usize let i15 ← lift (UScalar.cast .U64 i14) let i16 ← i15 <<< 32#i32 let i17 ← lift (i13 ||| i16) let i18 ← Slice.index_usize tupled_args 5#usize let i19 ← lift (UScalar.cast .U64 i18) let i20 ← i19 <<< 40#i32 let i21 ← lift (i17 ||| i20) let i22 ← Slice.index_usize tupled_args 6#usize let i23 ← lift (UScalar.cast .U64 i22) let i24 ← i23 <<< 48#i32 let i25 ← lift (i21 ||| i24) let i26 ← Slice.index_usize tupled_args 7#usize let i27 ← lift (UScalar.cast .U64 i26) let i28 ← i27 <<< 56#i32 ok (i25 ||| i28) /-- [curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::from_bytes]: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 338:4-363:5 Visibility: public -/ def backend.serial.u64.field.FieldElement51.from_bytes (bytes : Array Std.U8 32#usize) : Result backend.serial.u64.field.FieldElement51 := do let i ← 1#u64 <<< 51#i32 let low_51_bit_mask ← i - 1#u64 let s ← core.array.Array.index (core.ops.index.IndexSlice (core.slice.index.SliceIndexRangeFromUsizeSlice Std.U8)) bytes { start := 0#usize } let i1 ← backend.serial.u64.field.FieldElement51.from_bytes.closure.Insts.CoreOpsFunctionFnTupleSharedSliceU8U64.call () s let i2 ← lift (i1 &&& low_51_bit_mask) let s1 ← core.array.Array.index (core.ops.index.IndexSlice (core.slice.index.SliceIndexRangeFromUsizeSlice Std.U8)) bytes { start := 6#usize } let i3 ← backend.serial.u64.field.FieldElement51.from_bytes.closure.Insts.CoreOpsFunctionFnTupleSharedSliceU8U64.call () s1 let i4 ← i3 >>> 3#i32 let i5 ← lift (i4 &&& low_51_bit_mask) let s2 ← core.array.Array.index (core.ops.index.IndexSlice (core.slice.index.SliceIndexRangeFromUsizeSlice Std.U8)) bytes { start := 12#usize } let i6 ← backend.serial.u64.field.FieldElement51.from_bytes.closure.Insts.CoreOpsFunctionFnTupleSharedSliceU8U64.call () s2 let i7 ← i6 >>> 6#i32 let i8 ← lift (i7 &&& low_51_bit_mask) let s3 ← core.array.Array.index (core.ops.index.IndexSlice (core.slice.index.SliceIndexRangeFromUsizeSlice Std.U8)) bytes { start := 19#usize } let i9 ← backend.serial.u64.field.FieldElement51.from_bytes.closure.Insts.CoreOpsFunctionFnTupleSharedSliceU8U64.call () s3 let i10 ← i9 >>> 1#i32 let i11 ← lift (i10 &&& low_51_bit_mask) let s4 ← core.array.Array.index (core.ops.index.IndexSlice (core.slice.index.SliceIndexRangeFromUsizeSlice Std.U8)) bytes { start := 24#usize } let i12 ← backend.serial.u64.field.FieldElement51.from_bytes.closure.Insts.CoreOpsFunctionFnTupleSharedSliceU8U64.call () s4 let i13 ← i12 >>> 12#i32 let i14 ← lift (i13 &&& low_51_bit_mask) ok (Array.make 5#usize [ i2, i5, i8, i11, i14 ]) /-- [curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::from_bytes::{impl core::ops::function::FnMut<(&'_ [u8],), u64> for curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::from_bytes::closure}::call_mut]: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 339:20-348:9 -/ def backend.serial.u64.field.FieldElement51.from_bytes.closure.Insts.CoreOpsFunctionFnMutTupleSharedSliceU8U64.call_mut (state : backend.serial.u64.field.FieldElement51.from_bytes.closure) (args : Slice Std.U8) : Result (Std.U64 × backend.serial.u64.field.FieldElement51.from_bytes.closure) := do let i ← backend.serial.u64.field.FieldElement51.from_bytes.closure.Insts.CoreOpsFunctionFnTupleSharedSliceU8U64.call state args ok (i, state) /-- [curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::from_bytes::{impl core::ops::function::FnOnce<(&'_ [u8],), u64> for curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::from_bytes::closure}::call_once]: Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 339:20-348:9 -/ def backend.serial.u64.field.FieldElement51.from_bytes.closure.Insts.CoreOpsFunctionFnOnceTupleSharedSliceU8U64.call_once (c : backend.serial.u64.field.FieldElement51.from_bytes.closure) (s : Slice Std.U8) : Result Std.U64 := do let (i, _) ← backend.serial.u64.field.FieldElement51.from_bytes.closure.Insts.CoreOpsFunctionFnMutTupleSharedSliceU8U64.call_mut c s ok i /-- Trait implementation: [curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::from_bytes::{impl core::ops::function::FnOnce<(&'_ [u8],), u64> for curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::from_bytes::closure}] Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 339:20-348:9 -/ @[reducible] def backend.serial.u64.field.FieldElement51.from_bytes.closure.Insts.CoreOpsFunctionFnOnceTupleSharedSliceU8U64 : core.ops.function.FnOnce backend.serial.u64.field.FieldElement51.from_bytes.closure (Slice Std.U8) Std.U64 := { call_once := backend.serial.u64.field.FieldElement51.from_bytes.closure.Insts.CoreOpsFunctionFnOnceTupleSharedSliceU8U64.call_once } /-- Trait implementation: [curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::from_bytes::{impl core::ops::function::FnMut<(&'_ [u8],), u64> for curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::from_bytes::closure}] Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 339:20-348:9 -/ @[reducible] def backend.serial.u64.field.FieldElement51.from_bytes.closure.Insts.CoreOpsFunctionFnMutTupleSharedSliceU8U64 : core.ops.function.FnMut backend.serial.u64.field.FieldElement51.from_bytes.closure (Slice Std.U8) Std.U64 := { FnOnceInst := backend.serial.u64.field.FieldElement51.from_bytes.closure.Insts.CoreOpsFunctionFnOnceTupleSharedSliceU8U64 call_mut := backend.serial.u64.field.FieldElement51.from_bytes.closure.Insts.CoreOpsFunctionFnMutTupleSharedSliceU8U64.call_mut } /-- Trait implementation: [curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::from_bytes::{impl core::ops::function::Fn<(&'_ [u8],), u64> for curve25519_dalek::backend::serial::u64::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::from_bytes::closure}] Source: 'curve25519-dalek/src/backend/serial/u64/field.rs', lines 339:20-348:9 -/ @[reducible] def backend.serial.u64.field.FieldElement51.from_bytes.closure.Insts.CoreOpsFunctionFnTupleSharedSliceU8U64 : core.ops.function.Fn backend.serial.u64.field.FieldElement51.from_bytes.closure (Slice Std.U8) Std.U64 := { FnMutInst := backend.serial.u64.field.FieldElement51.from_bytes.closure.Insts.CoreOpsFunctionFnMutTupleSharedSliceU8U64 call := backend.serial.u64.field.FieldElement51.from_bytes.closure.Insts.CoreOpsFunctionFnTupleSharedSliceU8U64.call } /-- [curve25519_dalek::constants::BASEPOINT_ORDER_PRIVATE] Source: 'curve25519-dalek/src/constants.rs', lines 77:0-83:2 -/ @[global_simps, irreducible] def constants.BASEPOINT_ORDER_PRIVATE : scalar.Scalar := { bytes := (Array.make 32#usize [ 237#u8, 211#u8, 245#u8, 92#u8, 26#u8, 99#u8, 18#u8, 88#u8, 214#u8, 156#u8, 247#u8, 162#u8, 222#u8, 249#u8, 222#u8, 20#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 16#u8 ]) } /-- [curve25519_dalek::edwards::{impl core::clone::Clone for curve25519_dalek::edwards::CompressedEdwardsY}::clone]: Source: 'curve25519-dalek/src/edwards.rs', lines 164:15-164:20 Visibility: public -/ def edwards.CompressedEdwardsY.Insts.CoreCloneClone.clone (self : edwards.CompressedEdwardsY) : Result edwards.CompressedEdwardsY := do ok self /-- Trait implementation: [curve25519_dalek::edwards::{impl core::clone::Clone for curve25519_dalek::edwards::CompressedEdwardsY}] Source: 'curve25519-dalek/src/edwards.rs', lines 164:15-164:20 -/ @[reducible] def edwards.CompressedEdwardsY.Insts.CoreCloneClone : core.clone.Clone edwards.CompressedEdwardsY := { clone := edwards.CompressedEdwardsY.Insts.CoreCloneClone.clone } /-- Trait implementation: [curve25519_dalek::edwards::{impl core::marker::Copy for curve25519_dalek::edwards::CompressedEdwardsY}] Source: 'curve25519-dalek/src/edwards.rs', lines 164:9-164:13 -/ @[reducible] def edwards.CompressedEdwardsY.Insts.CoreMarkerCopy : core.marker.Copy edwards.CompressedEdwardsY := { cloneInst := edwards.CompressedEdwardsY.Insts.CoreCloneClone } /-- [curve25519_dalek::edwards::{impl core::cmp::PartialEq for curve25519_dalek::edwards::CompressedEdwardsY}::eq]: Source: 'curve25519-dalek/src/edwards.rs', lines 164:26-164:35 Visibility: public -/ def edwards.CompressedEdwardsY.Insts.CoreCmpPartialEqCompressedEdwardsY.eq (self : edwards.CompressedEdwardsY) (other : edwards.CompressedEdwardsY) : Result Bool := do core.array.equality.PartialEqArray.eq core.cmp.PartialEqU8 self other /-- Trait implementation: [curve25519_dalek::edwards::{impl core::cmp::PartialEq for curve25519_dalek::edwards::CompressedEdwardsY}] Source: 'curve25519-dalek/src/edwards.rs', lines 164:26-164:35 -/ @[reducible] def edwards.CompressedEdwardsY.Insts.CoreCmpPartialEqCompressedEdwardsY : core.cmp.PartialEq edwards.CompressedEdwardsY edwards.CompressedEdwardsY := { eq := edwards.CompressedEdwardsY.Insts.CoreCmpPartialEqCompressedEdwardsY.eq } /-- [curve25519_dalek::edwards::{impl core::cmp::Eq for curve25519_dalek::edwards::CompressedEdwardsY}::assert_fields_are_eq]: Source: 'curve25519-dalek/src/edwards.rs', lines 164:22-164:24 Visibility: public -/ def edwards.CompressedEdwardsY.Insts.CoreCmpEq.assert_fields_are_eq (self : edwards.CompressedEdwardsY) : Result Unit := do ok () /-- Trait implementation: [curve25519_dalek::edwards::{impl core::cmp::Eq for curve25519_dalek::edwards::CompressedEdwardsY}] Source: 'curve25519-dalek/src/edwards.rs', lines 164:22-164:24 -/ @[reducible] def edwards.CompressedEdwardsY.Insts.CoreCmpEq : core.cmp.Eq edwards.CompressedEdwardsY := { partialEqInst := edwards.CompressedEdwardsY.Insts.CoreCmpPartialEqCompressedEdwardsY assert_fields_are_eq := edwards.CompressedEdwardsY.Insts.CoreCmpEq.assert_fields_are_eq } /-- Trait implementation: [curve25519_dalek::edwards::{impl core::marker::StructuralPartialEq for curve25519_dalek::edwards::CompressedEdwardsY}] Source: 'curve25519-dalek/src/edwards.rs', lines 164:26-164:35 -/ @[reducible] def edwards.CompressedEdwardsY.Insts.CoreMarkerStructuralPartialEq : core.marker.StructuralPartialEq edwards.CompressedEdwardsY := { } /-- [curve25519_dalek::edwards::{impl core::hash::Hash for curve25519_dalek::edwards::CompressedEdwardsY}::hash]: Source: 'curve25519-dalek/src/edwards.rs', lines 164:37-164:41 Visibility: public -/ def edwards.CompressedEdwardsY.Insts.CoreHashHash.hash {__H : Type} (corehashHasherInst : core.hash.Hasher __H) (self : edwards.CompressedEdwardsY) (state : __H) : Result __H := do Array.Insts.CoreHashHash.hash U8.Insts.CoreHashHash corehashHasherInst self state /-- Trait implementation: [curve25519_dalek::edwards::{impl core::hash::Hash for curve25519_dalek::edwards::CompressedEdwardsY}] Source: 'curve25519-dalek/src/edwards.rs', lines 164:37-164:41 -/ @[reducible] def edwards.CompressedEdwardsY.Insts.CoreHashHash : core.hash.Hash edwards.CompressedEdwardsY := { hash := fun {H : Type} (corehashHasherInst : core.hash.Hasher H) => edwards.CompressedEdwardsY.Insts.CoreHashHash.hash corehashHasherInst } /-- [curve25519_dalek::edwards::{curve25519_dalek::edwards::CompressedEdwardsY}::as_bytes]: Source: 'curve25519-dalek/src/edwards.rs', lines 181:4-183:5 Visibility: public -/ def edwards.CompressedEdwardsY.as_bytes (self : edwards.CompressedEdwardsY) : Result (Array Std.U8 32#usize) := do ok self /-- [curve25519_dalek::edwards::{impl subtle::ConstantTimeEq for curve25519_dalek::edwards::CompressedEdwardsY}::ct_eq]: Source: 'curve25519-dalek/src/edwards.rs', lines 168:4-170:5 Visibility: public -/ def edwards.CompressedEdwardsY.Insts.SubtleConstantTimeEq.ct_eq (self : edwards.CompressedEdwardsY) (other : edwards.CompressedEdwardsY) : Result subtle.Choice := do let a ← edwards.CompressedEdwardsY.as_bytes self let s ← lift (Array.to_slice a) let a1 ← edwards.CompressedEdwardsY.as_bytes other let s1 ← lift (Array.to_slice a1) Slice.Insts.SubtleConstantTimeEq.ct_eq U8.Insts.SubtleConstantTimeEq s s1 /-- Trait implementation: [curve25519_dalek::edwards::{impl subtle::ConstantTimeEq for curve25519_dalek::edwards::CompressedEdwardsY}] Source: 'curve25519-dalek/src/edwards.rs', lines 167:0-171:1 -/ @[reducible] def edwards.CompressedEdwardsY.Insts.SubtleConstantTimeEq : subtle.ConstantTimeEq edwards.CompressedEdwardsY := { ct_eq := edwards.CompressedEdwardsY.Insts.SubtleConstantTimeEq.ct_eq } /-- [curve25519_dalek::edwards::{impl core::fmt::Debug for curve25519_dalek::edwards::CompressedEdwardsY}::fmt]: Source: 'curve25519-dalek/src/edwards.rs', lines 174:4-176:5 Visibility: public -/ def edwards.CompressedEdwardsY.Insts.CoreFmtDebug.fmt (self : edwards.CompressedEdwardsY) (f : core.fmt.Formatter) : Result ((core.result.Result Unit core.fmt.Error) × core.fmt.Formatter) := do let args ← edwards.CompressedEdwardsY.as_bytes self let a ← core.fmt.rt.Argument.new_debug (core.fmt.DebugShared (Array.Insts.CoreFmtDebug 32#usize core.fmt.DebugU8)) args let a1 ← core.fmt.Arguments.new (Array.make 23#usize [ 20#u8, 67#u8, 111#u8, 109#u8, 112#u8, 114#u8, 101#u8, 115#u8, 115#u8, 101#u8, 100#u8, 69#u8, 100#u8, 119#u8, 97#u8, 114#u8, 100#u8, 115#u8, 89#u8, 58#u8, 32#u8, 192#u8, 0#u8 ]) (Array.make 1#usize [ a ]) core.fmt.Formatter.write_fmt f a1 /-- Trait implementation: [curve25519_dalek::edwards::{impl core::fmt::Debug for curve25519_dalek::edwards::CompressedEdwardsY}] Source: 'curve25519-dalek/src/edwards.rs', lines 173:0-177:1 -/ @[reducible] def edwards.CompressedEdwardsY.Insts.CoreFmtDebug : core.fmt.Debug edwards.CompressedEdwardsY := { fmt := edwards.CompressedEdwardsY.Insts.CoreFmtDebug.fmt } /-- [curve25519_dalek::edwards::{curve25519_dalek::edwards::CompressedEdwardsY}::to_bytes]: Source: 'curve25519-dalek/src/edwards.rs', lines 186:4-188:5 Visibility: public -/ def edwards.CompressedEdwardsY.to_bytes (self : edwards.CompressedEdwardsY) : Result (Array Std.U8 32#usize) := do ok self /-- [curve25519_dalek::edwards::{curve25519_dalek::edwards::CompressedEdwardsY}::decompress]: Source: 'curve25519-dalek/src/edwards.rs', lines 194:4-202:5 Visibility: public -/ def edwards.CompressedEdwardsY.decompress (self : edwards.CompressedEdwardsY) : Result (Option edwards.EdwardsPoint) := do let (is_valid_y_coord, X, Y, Z) ← edwards.decompress.step_1 self let b ← core.convert.IntoFrom.into Bool.Insts.CoreConvertFromChoice is_valid_y_coord if b then let ep ← edwards.decompress.step_2 self X Y Z ok (some ep) else ok none /-- [curve25519_dalek::edwards::{impl core::convert::TryFrom<&'_0 [u8], core::array::TryFromSliceError> for curve25519_dalek::edwards::CompressedEdwardsY}::try_from]: Source: 'curve25519-dalek/src/edwards.rs', lines 246:4-248:5 Visibility: public -/ def edwards.CompressedEdwardsY.Insts.CoreConvertTryFromShared0SliceU8TryFromSliceError.try_from (slice : Slice Std.U8) : Result (core.result.Result edwards.CompressedEdwardsY core.array.TryFromSliceError) := do edwards.CompressedEdwardsY.from_slice slice /-- Trait implementation: [curve25519_dalek::edwards::{impl core::convert::TryFrom<&'_0 [u8], core::array::TryFromSliceError> for curve25519_dalek::edwards::CompressedEdwardsY}] Source: 'curve25519-dalek/src/edwards.rs', lines 243:0-249:1 -/ @[reducible] def edwards.CompressedEdwardsY.Insts.CoreConvertTryFromShared0SliceU8TryFromSliceError : core.convert.TryFrom edwards.CompressedEdwardsY (Slice Std.U8) core.array.TryFromSliceError := { try_from := edwards.CompressedEdwardsY.Insts.CoreConvertTryFromShared0SliceU8TryFromSliceError.try_from } /-- [curve25519_dalek::edwards::{impl core::clone::Clone for curve25519_dalek::edwards::EdwardsPoint}::clone]: Source: 'curve25519-dalek/src/edwards.rs', lines 369:15-369:20 Visibility: public -/ def edwards.EdwardsPoint.Insts.CoreCloneClone.clone (self : edwards.EdwardsPoint) : Result edwards.EdwardsPoint := do ok self /-- Trait implementation: [curve25519_dalek::edwards::{impl core::clone::Clone for curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/edwards.rs', lines 369:15-369:20 -/ @[reducible] def edwards.EdwardsPoint.Insts.CoreCloneClone : core.clone.Clone edwards.EdwardsPoint := { clone := edwards.EdwardsPoint.Insts.CoreCloneClone.clone } /-- Trait implementation: [curve25519_dalek::edwards::{impl core::marker::Copy for curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/edwards.rs', lines 369:9-369:13 -/ @[reducible] def edwards.EdwardsPoint.Insts.CoreMarkerCopy : core.marker.Copy edwards.EdwardsPoint := { cloneInst := edwards.EdwardsPoint.Insts.CoreCloneClone } /-- [curve25519_dalek::edwards::{impl curve25519_dalek::traits::Identity for curve25519_dalek::edwards::CompressedEdwardsY}::identity]: Source: 'curve25519-dalek/src/edwards.rs', lines 383:4-388:5 Visibility: public -/ def edwards.CompressedEdwardsY.Insts.Curve25519_dalekTraitsIdentity.identity : Result edwards.CompressedEdwardsY := do ok (Array.make 32#usize [ 1#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8, 0#u8 ]) /-- Trait implementation: [curve25519_dalek::edwards::{impl curve25519_dalek::traits::Identity for curve25519_dalek::edwards::CompressedEdwardsY}] Source: 'curve25519-dalek/src/edwards.rs', lines 382:0-389:1 -/ @[reducible] def edwards.CompressedEdwardsY.Insts.Curve25519_dalekTraitsIdentity : traits.Identity edwards.CompressedEdwardsY := { identity := edwards.CompressedEdwardsY.Insts.Curve25519_dalekTraitsIdentity.identity } /-- [curve25519_dalek::edwards::{impl core::default::Default for curve25519_dalek::edwards::CompressedEdwardsY}::default]: Source: 'curve25519-dalek/src/edwards.rs', lines 392:4-394:5 Visibility: public -/ def edwards.CompressedEdwardsY.Insts.CoreDefaultDefault.default : Result edwards.CompressedEdwardsY := do edwards.CompressedEdwardsY.Insts.Curve25519_dalekTraitsIdentity.identity /-- Trait implementation: [curve25519_dalek::edwards::{impl core::default::Default for curve25519_dalek::edwards::CompressedEdwardsY}] Source: 'curve25519-dalek/src/edwards.rs', lines 391:0-395:1 -/ @[reducible] def edwards.CompressedEdwardsY.Insts.CoreDefaultDefault : core.default.Default edwards.CompressedEdwardsY := { default := edwards.CompressedEdwardsY.Insts.CoreDefaultDefault.default } /-- [curve25519_dalek::edwards::{impl curve25519_dalek::traits::Identity for curve25519_dalek::edwards::EdwardsPoint}::identity]: Source: 'curve25519-dalek/src/edwards.rs', lines 410:4-417:5 Visibility: public -/ def edwards.EdwardsPoint.Insts.Curve25519_dalekTraitsIdentity.identity : Result edwards.EdwardsPoint := do let fe ← backend.serial.u64.field.FieldElement51.ZERO let fe1 ← backend.serial.u64.field.FieldElement51.ONE ok { X := fe, Y := fe1, Z := fe1, T := fe } /-- Trait implementation: [curve25519_dalek::edwards::{impl curve25519_dalek::traits::Identity for curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/edwards.rs', lines 409:0-418:1 -/ @[reducible] def edwards.EdwardsPoint.Insts.Curve25519_dalekTraitsIdentity : traits.Identity edwards.EdwardsPoint := { identity := edwards.EdwardsPoint.Insts.Curve25519_dalekTraitsIdentity.identity } /-- [curve25519_dalek::edwards::{impl core::default::Default for curve25519_dalek::edwards::EdwardsPoint}::default]: Source: 'curve25519-dalek/src/edwards.rs', lines 421:4-423:5 Visibility: public -/ def edwards.EdwardsPoint.Insts.CoreDefaultDefault.default : Result edwards.EdwardsPoint := do edwards.EdwardsPoint.Insts.Curve25519_dalekTraitsIdentity.identity /-- Trait implementation: [curve25519_dalek::edwards::{impl core::default::Default for curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/edwards.rs', lines 420:0-424:1 -/ @[reducible] def edwards.EdwardsPoint.Insts.CoreDefaultDefault : core.default.Default edwards.EdwardsPoint := { default := edwards.EdwardsPoint.Insts.CoreDefaultDefault.default } /-- [curve25519_dalek::edwards::{impl curve25519_dalek::traits::ValidityCheck for curve25519_dalek::edwards::EdwardsPoint}::is_valid]: Source: 'curve25519-dalek/src/edwards.rs', lines 455:4-460:5 -/ def edwards.EdwardsPoint.Insts.Curve25519_dalekTraitsValidityCheck.is_valid (self : edwards.EdwardsPoint) : Result Bool := do let pp ← edwards.EdwardsPoint.as_projective self let point_on_curve ← backend.serial.curve_models.ProjectivePoint.Insts.Curve25519_dalekTraitsValidityCheck.is_valid pp let fe ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self.X self.Y let fe1 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self.Z self.T let on_segre_image ← backend.serial.u64.field.FieldElement51.Insts.CoreCmpPartialEqFieldElement51.eq fe fe1 if point_on_curve then ok on_segre_image else ok false /-- Trait implementation: [curve25519_dalek::edwards::{impl curve25519_dalek::traits::ValidityCheck for curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/edwards.rs', lines 454:0-461:1 -/ @[reducible] def edwards.EdwardsPoint.Insts.Curve25519_dalekTraitsValidityCheck : traits.ValidityCheck edwards.EdwardsPoint := { is_valid := edwards.EdwardsPoint.Insts.Curve25519_dalekTraitsValidityCheck.is_valid } /-- [curve25519_dalek::edwards::{impl subtle::ConditionallySelectable for curve25519_dalek::edwards::EdwardsPoint}::conditional_select]: Source: 'curve25519-dalek/src/edwards.rs', lines 468:4-475:5 Visibility: public -/ def edwards.EdwardsPoint.Insts.SubtleConditionallySelectable.conditional_select (a : edwards.EdwardsPoint) (b : edwards.EdwardsPoint) (choice : subtle.Choice) : Result edwards.EdwardsPoint := do let fe ← backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_select a.X b.X choice let fe1 ← backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_select a.Y b.Y choice let fe2 ← backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_select a.Z b.Z choice let fe3 ← backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_select a.T b.T choice ok { X := fe, Y := fe1, Z := fe2, T := fe3 } /-- Trait implementation: [curve25519_dalek::edwards::{impl subtle::ConditionallySelectable for curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/edwards.rs', lines 467:0-476:1 -/ @[reducible] def edwards.EdwardsPoint.Insts.SubtleConditionallySelectable : subtle.ConditionallySelectable edwards.EdwardsPoint := { coremarkerCopyInst := edwards.EdwardsPoint.Insts.CoreMarkerCopy conditional_select := edwards.EdwardsPoint.Insts.SubtleConditionallySelectable.conditional_select conditional_assign := edwards.EdwardsPoint.Insts.SubtleConditionallySelectable.conditional_assign conditional_swap := edwards.EdwardsPoint.Insts.SubtleConditionallySelectable.conditional_swap } /-- [curve25519_dalek::edwards::{impl subtle::ConstantTimeEq for curve25519_dalek::edwards::EdwardsPoint}::ct_eq]: Source: 'curve25519-dalek/src/edwards.rs', lines 483:4-492:5 Visibility: public -/ def edwards.EdwardsPoint.Insts.SubtleConstantTimeEq.ct_eq (self : edwards.EdwardsPoint) (other : edwards.EdwardsPoint) : Result subtle.Choice := do let fe ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self.X other.Z let fe1 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul other.X self.Z let c ← backend.serial.u64.field.FieldElement51.Insts.SubtleConstantTimeEq.ct_eq fe fe1 let fe2 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self.Y other.Z let fe3 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul other.Y self.Z let c1 ← backend.serial.u64.field.FieldElement51.Insts.SubtleConstantTimeEq.ct_eq fe2 fe3 subtle.Choice.Insts.CoreOpsBitBitAndChoiceChoice.bitand c c1 /-- Trait implementation: [curve25519_dalek::edwards::{impl subtle::ConstantTimeEq for curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/edwards.rs', lines 482:0-493:1 -/ @[reducible] def edwards.EdwardsPoint.Insts.SubtleConstantTimeEq : subtle.ConstantTimeEq edwards.EdwardsPoint := { ct_eq := edwards.EdwardsPoint.Insts.SubtleConstantTimeEq.ct_eq } /-- [curve25519_dalek::edwards::{impl core::cmp::PartialEq for curve25519_dalek::edwards::EdwardsPoint}::eq]: Source: 'curve25519-dalek/src/edwards.rs', lines 496:4-498:5 Visibility: public -/ def edwards.EdwardsPoint.Insts.CoreCmpPartialEqEdwardsPoint.eq (self : edwards.EdwardsPoint) (other : edwards.EdwardsPoint) : Result Bool := do let c ← edwards.EdwardsPoint.Insts.SubtleConstantTimeEq.ct_eq self other core.convert.IntoFrom.into Bool.Insts.CoreConvertFromChoice c /-- Trait implementation: [curve25519_dalek::edwards::{impl core::cmp::PartialEq for curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/edwards.rs', lines 495:0-499:1 -/ @[reducible] def edwards.EdwardsPoint.Insts.CoreCmpPartialEqEdwardsPoint : core.cmp.PartialEq edwards.EdwardsPoint edwards.EdwardsPoint := { eq := edwards.EdwardsPoint.Insts.CoreCmpPartialEqEdwardsPoint.eq } /-- Trait implementation: [curve25519_dalek::edwards::{impl core::cmp::Eq for curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/edwards.rs', lines 501:0-501:27 -/ @[reducible] def edwards.EdwardsPoint.Insts.CoreCmpEq : core.cmp.Eq edwards.EdwardsPoint := { partialEqInst := edwards.EdwardsPoint.Insts.CoreCmpPartialEqEdwardsPoint assert_fields_are_eq := edwards.EdwardsPoint.Insts.CoreCmpEq.assert_fields_are_eq } /-- [curve25519_dalek::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::pow22501]: Source: 'curve25519-dalek/src/field.rs', lines 129:4-163:5 -/ def field.FieldElement51.pow22501 (self : backend.serial.u64.field.FieldElement51) : Result (backend.serial.u64.field.FieldElement51 × backend.serial.u64.field.FieldElement51) := do let t0 ← backend.serial.u64.field.FieldElement51.square self let fe ← backend.serial.u64.field.FieldElement51.square t0 let t1 ← backend.serial.u64.field.FieldElement51.square fe let t2 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self t1 let t3 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul t0 t2 let t4 ← backend.serial.u64.field.FieldElement51.square t3 let t5 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul t2 t4 let t6 ← backend.serial.u64.field.FieldElement51.pow2k t5 5#u32 let t7 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul t6 t5 let t8 ← backend.serial.u64.field.FieldElement51.pow2k t7 10#u32 let t9 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul t8 t7 let t10 ← backend.serial.u64.field.FieldElement51.pow2k t9 20#u32 let t11 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul t10 t9 let t12 ← backend.serial.u64.field.FieldElement51.pow2k t11 10#u32 let t13 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul t12 t7 let t14 ← backend.serial.u64.field.FieldElement51.pow2k t13 50#u32 let t15 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul t14 t13 let t16 ← backend.serial.u64.field.FieldElement51.pow2k t15 100#u32 let t17 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul t16 t15 let t18 ← backend.serial.u64.field.FieldElement51.pow2k t17 50#u32 let t19 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul t18 t13 ok (t19, t3) /-- [curve25519_dalek::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::invert]: Source: 'curve25519-dalek/src/field.rs', lines 214:4-223:5 -/ def field.FieldElement51.invert (self : backend.serial.u64.field.FieldElement51) : Result backend.serial.u64.field.FieldElement51 := do let (t19, t3) ← field.FieldElement51.pow22501 self let t20 ← backend.serial.u64.field.FieldElement51.pow2k t19 5#u32 SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul t20 t3 /-- [curve25519_dalek::edwards::{curve25519_dalek::edwards::EdwardsPoint}::as_affine_niels]: Source: 'curve25519-dalek/src/edwards.rs', lines 532:4-542:5 -/ def edwards.EdwardsPoint.as_affine_niels (self : edwards.EdwardsPoint) : Result backend.serial.curve_models.AffineNielsPoint := do let recip ← field.FieldElement51.invert self.Z let x ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self.X recip let y ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self.Y recip let fe ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul x y let fe1 ← backend.serial.u64.constants.EDWARDS_D2 let xy2d ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul fe fe1 let fe2 ← SharedAFieldElement51.Insts.CoreOpsArithAddSharedBFieldElement51FieldElement51.add y x let fe3 ← SharedAFieldElement51.Insts.CoreOpsArithSubSharedBFieldElement51FieldElement51.sub y x ok { y_plus_x := fe2, y_minus_x := fe3, xy2d } /-- [curve25519_dalek::edwards::{curve25519_dalek::edwards::EdwardsPoint}::to_montgomery]: Source: 'curve25519-dalek/src/edwards.rs', lines 553:4-563:5 Visibility: public -/ def edwards.EdwardsPoint.to_montgomery (self : edwards.EdwardsPoint) : Result montgomery.MontgomeryPoint := do let U ← SharedAFieldElement51.Insts.CoreOpsArithAddSharedBFieldElement51FieldElement51.add self.Z self.Y let W ← SharedAFieldElement51.Insts.CoreOpsArithSubSharedBFieldElement51FieldElement51.sub self.Z self.Y let fe ← field.FieldElement51.invert W let u ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul U fe let a ← backend.serial.u64.field.FieldElement51.as_bytes u ok a /-- [curve25519_dalek::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::is_negative]: Source: 'curve25519-dalek/src/field.rs', lines 109:4-112:5 -/ def field.FieldElement51.is_negative (self : backend.serial.u64.field.FieldElement51) : Result subtle.Choice := do let bytes ← backend.serial.u64.field.FieldElement51.as_bytes self let i ← Array.index_usize bytes 0#usize let i1 ← lift (i &&& 1#u8) core.convert.IntoFrom.into subtle.Choice.Insts.CoreConvertFromU8 i1 /-- [curve25519_dalek::edwards::{curve25519_dalek::edwards::EdwardsPoint}::compress]: Source: 'curve25519-dalek/src/edwards.rs', lines 566:4-575:5 Visibility: public -/ def edwards.EdwardsPoint.compress (self : edwards.EdwardsPoint) : Result edwards.CompressedEdwardsY := do let recip ← field.FieldElement51.invert self.Z let x ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self.X recip let y ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self.Y recip let s ← backend.serial.u64.field.FieldElement51.as_bytes y let c ← field.FieldElement51.is_negative x let i ← subtle.Choice.unwrap_u8 c let i1 ← i <<< 7#i32 let i2 ← Array.index_usize s 31#usize let i3 ← lift (i2 ^^^ i1) let s1 ← Array.update s 31#usize i3 ok s1 /-- [curve25519_dalek::edwards::{impl core::ops::arith::Add<&'b curve25519_dalek::edwards::EdwardsPoint, curve25519_dalek::edwards::EdwardsPoint> for &'a curve25519_dalek::edwards::EdwardsPoint}::add]: Source: 'curve25519-dalek/src/edwards.rs', lines 627:4-629:5 Visibility: public -/ def SharedAEdwardsPoint.Insts.CoreOpsArithAddSharedBEdwardsPointEdwardsPoint.add (self : edwards.EdwardsPoint) (other : edwards.EdwardsPoint) : Result edwards.EdwardsPoint := do let pnp ← edwards.EdwardsPoint.as_projective_niels other let cp ← SharedAEdwardsPoint.Insts.CoreOpsArithAddSharedBProjectiveNielsPointCompletedPoint.add self pnp backend.serial.curve_models.CompletedPoint.as_extended cp /-- Trait implementation: [curve25519_dalek::edwards::{impl core::ops::arith::Add<&'b curve25519_dalek::edwards::EdwardsPoint, curve25519_dalek::edwards::EdwardsPoint> for &'a curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/edwards.rs', lines 625:0-630:1 -/ @[reducible] def SharedAEdwardsPoint.Insts.CoreOpsArithAddSharedBEdwardsPointEdwardsPoint : core.ops.arith.Add edwards.EdwardsPoint edwards.EdwardsPoint edwards.EdwardsPoint := { add := SharedAEdwardsPoint.Insts.CoreOpsArithAddSharedBEdwardsPointEdwardsPoint.add } /-- [curve25519_dalek::edwards::{impl core::ops::arith::AddAssign<&'b curve25519_dalek::edwards::EdwardsPoint> for curve25519_dalek::edwards::EdwardsPoint}::add_assign]: Source: 'curve25519-dalek/src/edwards.rs', lines 639:4-641:5 Visibility: public -/ def edwards.EdwardsPoint.Insts.CoreOpsArithAddAssignSharedBEdwardsPoint.add_assign (self : edwards.EdwardsPoint) (_rhs : edwards.EdwardsPoint) : Result edwards.EdwardsPoint := do SharedAEdwardsPoint.Insts.CoreOpsArithAddSharedBEdwardsPointEdwardsPoint.add self _rhs /-- Trait implementation: [curve25519_dalek::edwards::{impl core::ops::arith::AddAssign<&'b curve25519_dalek::edwards::EdwardsPoint> for curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/edwards.rs', lines 638:0-642:1 -/ @[reducible] def edwards.EdwardsPoint.Insts.CoreOpsArithAddAssignSharedBEdwardsPoint : core.ops.arith.AddAssign edwards.EdwardsPoint edwards.EdwardsPoint := { add_assign := edwards.EdwardsPoint.Insts.CoreOpsArithAddAssignSharedBEdwardsPoint.add_assign } /-- [curve25519_dalek::edwards::{impl core::ops::arith::Sub<&'b curve25519_dalek::edwards::EdwardsPoint, curve25519_dalek::edwards::EdwardsPoint> for &'a curve25519_dalek::edwards::EdwardsPoint}::sub]: Source: 'curve25519-dalek/src/edwards.rs', lines 648:4-650:5 Visibility: public -/ def SharedAEdwardsPoint.Insts.CoreOpsArithSubSharedBEdwardsPointEdwardsPoint.sub (self : edwards.EdwardsPoint) (other : edwards.EdwardsPoint) : Result edwards.EdwardsPoint := do let pnp ← edwards.EdwardsPoint.as_projective_niels other let cp ← SharedAEdwardsPoint.Insts.CoreOpsArithSubSharedBProjectiveNielsPointCompletedPoint.sub self pnp backend.serial.curve_models.CompletedPoint.as_extended cp /-- Trait implementation: [curve25519_dalek::edwards::{impl core::ops::arith::Sub<&'b curve25519_dalek::edwards::EdwardsPoint, curve25519_dalek::edwards::EdwardsPoint> for &'a curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/edwards.rs', lines 646:0-651:1 -/ @[reducible] def SharedAEdwardsPoint.Insts.CoreOpsArithSubSharedBEdwardsPointEdwardsPoint : core.ops.arith.Sub edwards.EdwardsPoint edwards.EdwardsPoint edwards.EdwardsPoint := { sub := SharedAEdwardsPoint.Insts.CoreOpsArithSubSharedBEdwardsPointEdwardsPoint.sub } /-- [curve25519_dalek::edwards::{impl core::ops::arith::SubAssign<&'b curve25519_dalek::edwards::EdwardsPoint> for curve25519_dalek::edwards::EdwardsPoint}::sub_assign]: Source: 'curve25519-dalek/src/edwards.rs', lines 660:4-662:5 Visibility: public -/ def edwards.EdwardsPoint.Insts.CoreOpsArithSubAssignSharedBEdwardsPoint.sub_assign (self : edwards.EdwardsPoint) (_rhs : edwards.EdwardsPoint) : Result edwards.EdwardsPoint := do SharedAEdwardsPoint.Insts.CoreOpsArithSubSharedBEdwardsPointEdwardsPoint.sub self _rhs /-- Trait implementation: [curve25519_dalek::edwards::{impl core::ops::arith::SubAssign<&'b curve25519_dalek::edwards::EdwardsPoint> for curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/edwards.rs', lines 659:0-663:1 -/ @[reducible] def edwards.EdwardsPoint.Insts.CoreOpsArithSubAssignSharedBEdwardsPoint : core.ops.arith.SubAssign edwards.EdwardsPoint edwards.EdwardsPoint := { sub_assign := edwards.EdwardsPoint.Insts.CoreOpsArithSubAssignSharedBEdwardsPoint.sub_assign } /-- Trait implementation: [curve25519_dalek::edwards::{impl core::iter::traits::accum::Sum for curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/edwards.rs', lines 667:0-677:1 -/ @[reducible] def edwards.EdwardsPoint.Insts.CoreIterTraitsAccumSum {T : Type} (coreborrowBorrowTEdwardsPointInst : core.borrow.Borrow T edwards.EdwardsPoint) : core.iter.traits.accum.Sum edwards.EdwardsPoint T := { sum := fun {I : Type} (coreitertraitsiteratorIteratorInst : core.iter.traits.iterator.Iterator I T) => edwards.EdwardsPoint.Insts.CoreIterTraitsAccumSum.sum coreborrowBorrowTEdwardsPointInst coreitertraitsiteratorIteratorInst } /-- [curve25519_dalek::edwards::{impl core::ops::arith::Neg for &'a curve25519_dalek::edwards::EdwardsPoint}::neg]: Source: 'curve25519-dalek/src/edwards.rs', lines 686:4-693:5 Visibility: public -/ def SharedAEdwardsPoint.Insts.CoreOpsArithNegEdwardsPoint.neg (self : edwards.EdwardsPoint) : Result edwards.EdwardsPoint := do let fe ← SharedAFieldElement51.Insts.CoreOpsArithNegFieldElement51.neg self.X let fe1 ← SharedAFieldElement51.Insts.CoreOpsArithNegFieldElement51.neg self.T ok { self with X := fe, T := fe1 } /-- Trait implementation: [curve25519_dalek::edwards::{impl core::ops::arith::Neg for &'a curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/edwards.rs', lines 683:0-694:1 -/ @[reducible] def SharedAEdwardsPoint.Insts.CoreOpsArithNegEdwardsPoint : core.ops.arith.Neg edwards.EdwardsPoint edwards.EdwardsPoint := { neg := SharedAEdwardsPoint.Insts.CoreOpsArithNegEdwardsPoint.neg } /-- [curve25519_dalek::edwards::{impl core::ops::arith::Neg for curve25519_dalek::edwards::EdwardsPoint}::neg]: Source: 'curve25519-dalek/src/edwards.rs', lines 699:4-701:5 Visibility: public -/ def edwards.EdwardsPoint.Insts.CoreOpsArithNegEdwardsPoint.neg (self : edwards.EdwardsPoint) : Result edwards.EdwardsPoint := do SharedAEdwardsPoint.Insts.CoreOpsArithNegEdwardsPoint.neg self /-- Trait implementation: [curve25519_dalek::edwards::{impl core::ops::arith::Neg for curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/edwards.rs', lines 696:0-702:1 -/ @[reducible] def edwards.EdwardsPoint.Insts.CoreOpsArithNegEdwardsPoint : core.ops.arith.Neg edwards.EdwardsPoint edwards.EdwardsPoint := { neg := edwards.EdwardsPoint.Insts.CoreOpsArithNegEdwardsPoint.neg } /-- [curve25519_dalek::edwards::{impl core::ops::arith::Mul<&'b curve25519_dalek::scalar::Scalar, curve25519_dalek::edwards::EdwardsPoint> for &'a curve25519_dalek::edwards::EdwardsPoint}::mul]: Source: 'curve25519-dalek/src/edwards.rs', lines 726:4-728:5 Visibility: public -/ def SharedAEdwardsPoint.Insts.CoreOpsArithMulSharedBScalarEdwardsPoint.mul (self : edwards.EdwardsPoint) (scalar : scalar.Scalar) : Result edwards.EdwardsPoint := do backend.variable_base_mul self scalar /-- [curve25519_dalek::edwards::{impl core::ops::arith::MulAssign<&'b curve25519_dalek::scalar::Scalar> for curve25519_dalek::edwards::EdwardsPoint}::mul_assign]: Source: 'curve25519-dalek/src/edwards.rs', lines 709:4-712:5 Visibility: public -/ def edwards.EdwardsPoint.Insts.CoreOpsArithMulAssignSharedBScalar.mul_assign (self : edwards.EdwardsPoint) (scalar : scalar.Scalar) : Result edwards.EdwardsPoint := do SharedAEdwardsPoint.Insts.CoreOpsArithMulSharedBScalarEdwardsPoint.mul self scalar /-- Trait implementation: [curve25519_dalek::edwards::{impl core::ops::arith::MulAssign<&'b curve25519_dalek::scalar::Scalar> for curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/edwards.rs', lines 708:0-713:1 -/ @[reducible] def edwards.EdwardsPoint.Insts.CoreOpsArithMulAssignSharedBScalar : core.ops.arith.MulAssign edwards.EdwardsPoint scalar.Scalar := { mul_assign := edwards.EdwardsPoint.Insts.CoreOpsArithMulAssignSharedBScalar.mul_assign } /-- Trait implementation: [curve25519_dalek::edwards::{impl core::ops::arith::Mul<&'b curve25519_dalek::scalar::Scalar, curve25519_dalek::edwards::EdwardsPoint> for &'a curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/edwards.rs', lines 720:0-729:1 -/ @[reducible] def SharedAEdwardsPoint.Insts.CoreOpsArithMulSharedBScalarEdwardsPoint : core.ops.arith.Mul edwards.EdwardsPoint scalar.Scalar edwards.EdwardsPoint := { mul := SharedAEdwardsPoint.Insts.CoreOpsArithMulSharedBScalarEdwardsPoint.mul } /-- [curve25519_dalek::edwards::{impl core::ops::arith::Mul<&'b curve25519_dalek::edwards::EdwardsPoint, curve25519_dalek::edwards::EdwardsPoint> for &'a curve25519_dalek::scalar::Scalar}::mul]: Source: 'curve25519-dalek/src/edwards.rs', lines 738:4-740:5 Visibility: public -/ def SharedAScalar.Insts.CoreOpsArithMulSharedBEdwardsPointEdwardsPoint.mul (self : scalar.Scalar) (point : edwards.EdwardsPoint) : Result edwards.EdwardsPoint := do SharedAEdwardsPoint.Insts.CoreOpsArithMulSharedBScalarEdwardsPoint.mul point self /-- Trait implementation: [curve25519_dalek::edwards::{impl core::ops::arith::Mul<&'b curve25519_dalek::edwards::EdwardsPoint, curve25519_dalek::edwards::EdwardsPoint> for &'a curve25519_dalek::scalar::Scalar}] Source: 'curve25519-dalek/src/edwards.rs', lines 731:0-741:1 -/ @[reducible] def SharedAScalar.Insts.CoreOpsArithMulSharedBEdwardsPointEdwardsPoint : core.ops.arith.Mul scalar.Scalar edwards.EdwardsPoint edwards.EdwardsPoint := { mul := SharedAScalar.Insts.CoreOpsArithMulSharedBEdwardsPointEdwardsPoint.mul } /-- [curve25519_dalek::edwards::{impl core::ops::arith::Mul for &'a curve25519_dalek::scalar::Scalar}::mul]: Source: 'curve25519-dalek/src/macros.rs', lines 100:12-102:13 Visibility: public -/ def SharedAScalar.Insts.CoreOpsArithMulEdwardsPointEdwardsPoint.mul (self : scalar.Scalar) (rhs : edwards.EdwardsPoint) : Result edwards.EdwardsPoint := do SharedAScalar.Insts.CoreOpsArithMulSharedBEdwardsPointEdwardsPoint.mul self rhs /-- [curve25519_dalek::edwards::{curve25519_dalek::edwards::EdwardsPoint}::mul_base]: Source: 'curve25519-dalek/src/edwards.rs', lines 748:4-758:5 Visibility: public -/ def edwards.EdwardsPoint.mul_base (scalar : scalar.Scalar) : Result edwards.EdwardsPoint := do let ep ← backend.serial.u64.constants.ED25519_BASEPOINT_POINT SharedAScalar.Insts.CoreOpsArithMulEdwardsPointEdwardsPoint.mul scalar ep /-- [curve25519_dalek::scalar::clamp_integer]: Source: 'curve25519-dalek/src/scalar.rs', lines 1404:0-1409:1 Visibility: public -/ def scalar.clamp_integer (bytes : Array Std.U8 32#usize) : Result (Array Std.U8 32#usize) := do let i ← Array.index_usize bytes 0#usize let i1 ← lift (i &&& 248#u8) let bytes1 ← Array.update bytes 0#usize i1 let i2 ← Array.index_usize bytes1 31#usize let i3 ← lift (i2 &&& 127#u8) let bytes2 ← Array.update bytes1 31#usize i3 let i4 ← Array.index_usize bytes2 31#usize let i5 ← lift (i4 ||| 64#u8) Array.update bytes2 31#usize i5 /-- [curve25519_dalek::edwards::{impl core::ops::arith::Mul for curve25519_dalek::scalar::Scalar}::mul]: Source: 'curve25519-dalek/src/macros.rs', lines 107:12-109:13 Visibility: public -/ def scalar.Scalar.Insts.CoreOpsArithMulEdwardsPointEdwardsPoint.mul (self : scalar.Scalar) (rhs : edwards.EdwardsPoint) : Result edwards.EdwardsPoint := do SharedAScalar.Insts.CoreOpsArithMulSharedBEdwardsPointEdwardsPoint.mul self rhs /-- [curve25519_dalek::edwards::{curve25519_dalek::edwards::EdwardsPoint}::mul_clamped]: Source: 'curve25519-dalek/src/edwards.rs', lines 762:4-774:5 Visibility: public -/ def edwards.EdwardsPoint.mul_clamped (self : edwards.EdwardsPoint) (bytes : Array Std.U8 32#usize) : Result edwards.EdwardsPoint := do let a ← scalar.clamp_integer bytes scalar.Scalar.Insts.CoreOpsArithMulEdwardsPointEdwardsPoint.mul { bytes := a } self /-- [curve25519_dalek::edwards::{curve25519_dalek::edwards::EdwardsPoint}::mul_base_clamped]: Source: 'curve25519-dalek/src/edwards.rs', lines 778:4-786:5 Visibility: public -/ def edwards.EdwardsPoint.mul_base_clamped (bytes : Array Std.U8 32#usize) : Result edwards.EdwardsPoint := do let a ← scalar.clamp_integer bytes edwards.EdwardsPoint.mul_base { bytes := a } /-- [curve25519_dalek::edwards::{curve25519_dalek::edwards::EdwardsPoint}::vartime_double_scalar_mul_basepoint]: Source: 'curve25519-dalek/src/edwards.rs', lines 902:4-908:5 Visibility: public -/ def edwards.EdwardsPoint.vartime_double_scalar_mul_basepoint (a : scalar.Scalar) (A : edwards.EdwardsPoint) (b : scalar.Scalar) : Result edwards.EdwardsPoint := do backend.vartime_double_base_mul a A b /-- [curve25519_dalek::edwards::{curve25519_dalek::edwards::EdwardsPoint}::mul_by_pow_2]: loop body 0: Source: 'curve25519-dalek/src/edwards.rs', lines 1196:8-1199:9 -/ @[rust_loop_body] def edwards.EdwardsPoint.mul_by_pow_2_loop.body (iter : core.ops.range.Range Std.U32) (s : backend.serial.curve_models.ProjectivePoint) : Result (ControlFlow ((core.ops.range.Range Std.U32) × backend.serial.curve_models.ProjectivePoint) backend.serial.curve_models.ProjectivePoint) := do let (o, iter1) ← core.iter.range.IteratorRange.next U32.Insts.CoreIterRangeStep iter match o with | none => ok (done s) | some _ => let r ← backend.serial.curve_models.ProjectivePoint.double s let s1 ← backend.serial.curve_models.CompletedPoint.as_projective r ok (cont (iter1, s1)) /-- [curve25519_dalek::edwards::{curve25519_dalek::edwards::EdwardsPoint}::mul_by_pow_2]: loop 0: Source: 'curve25519-dalek/src/edwards.rs', lines 1196:8-1199:9 -/ @[rust_loop] def edwards.EdwardsPoint.mul_by_pow_2_loop (iter : core.ops.range.Range Std.U32) (s : backend.serial.curve_models.ProjectivePoint) : Result backend.serial.curve_models.ProjectivePoint := do loop (fun (iter1, s1) => edwards.EdwardsPoint.mul_by_pow_2_loop.body iter1 s1) (iter, s) /-- [curve25519_dalek::edwards::{curve25519_dalek::edwards::EdwardsPoint}::mul_by_pow_2]: Source: 'curve25519-dalek/src/edwards.rs', lines 1192:4-1202:5 -/ def edwards.EdwardsPoint.mul_by_pow_2 (self : edwards.EdwardsPoint) (k : Std.U32) : Result edwards.EdwardsPoint := do massert (k > 0#u32) let s ← edwards.EdwardsPoint.as_projective self let i ← k - 1#u32 let s1 ← edwards.EdwardsPoint.mul_by_pow_2_loop { start := 0#u32, «end» := i } s let cp ← backend.serial.curve_models.ProjectivePoint.double s1 backend.serial.curve_models.CompletedPoint.as_extended cp /-- [curve25519_dalek::edwards::{curve25519_dalek::edwards::EdwardsPoint}::mul_by_cofactor]: Source: 'curve25519-dalek/src/edwards.rs', lines 1187:4-1189:5 Visibility: public -/ def edwards.EdwardsPoint.mul_by_cofactor (self : edwards.EdwardsPoint) : Result edwards.EdwardsPoint := do edwards.EdwardsPoint.mul_by_pow_2 self 3#u32 /-- [curve25519_dalek::traits::{impl curve25519_dalek::traits::IsIdentity for T}::is_identity]: Source: 'curve25519-dalek/src/traits.rs', lines 45:4-47:5 Visibility: public -/ def traits.IsIdentity.Blanket.is_identity {T : Type} (subtleConstantTimeEqInst : subtle.ConstantTimeEq T) (IdentityInst : traits.Identity T) (self : T) : Result Bool := do let t ← IdentityInst.identity let c ← subtleConstantTimeEqInst.ct_eq self t core.convert.IntoFrom.into Bool.Insts.CoreConvertFromChoice c /-- [curve25519_dalek::edwards::{curve25519_dalek::edwards::EdwardsPoint}::is_small_order]: Source: 'curve25519-dalek/src/edwards.rs', lines 1227:4-1229:5 Visibility: public -/ def edwards.EdwardsPoint.is_small_order (self : edwards.EdwardsPoint) : Result Bool := do let ep ← edwards.EdwardsPoint.mul_by_cofactor self traits.IsIdentity.Blanket.is_identity edwards.EdwardsPoint.Insts.SubtleConstantTimeEq edwards.EdwardsPoint.Insts.Curve25519_dalekTraitsIdentity ep /-- [curve25519_dalek::edwards::{impl core::ops::arith::Mul for &'a curve25519_dalek::edwards::EdwardsPoint}::mul]: Source: 'curve25519-dalek/src/macros.rs', lines 100:12-102:13 Visibility: public -/ def SharedAEdwardsPoint.Insts.CoreOpsArithMulScalarEdwardsPoint.mul (self : edwards.EdwardsPoint) (rhs : scalar.Scalar) : Result edwards.EdwardsPoint := do SharedAEdwardsPoint.Insts.CoreOpsArithMulSharedBScalarEdwardsPoint.mul self rhs /-- [curve25519_dalek::edwards::{curve25519_dalek::edwards::EdwardsPoint}::is_torsion_free]: Source: 'curve25519-dalek/src/edwards.rs', lines 1257:4-1259:5 Visibility: public -/ def edwards.EdwardsPoint.is_torsion_free (self : edwards.EdwardsPoint) : Result Bool := do let ep ← SharedAEdwardsPoint.Insts.CoreOpsArithMulScalarEdwardsPoint.mul self constants.BASEPOINT_ORDER_PRIVATE traits.IsIdentity.Blanket.is_identity edwards.EdwardsPoint.Insts.SubtleConstantTimeEq edwards.EdwardsPoint.Insts.Curve25519_dalekTraitsIdentity ep /-- [curve25519_dalek::edwards::{impl core::fmt::Debug for curve25519_dalek::edwards::EdwardsPoint}::fmt]: Source: 'curve25519-dalek/src/edwards.rs', lines 1267:4-1273:5 Visibility: public -/ def edwards.EdwardsPoint.Insts.CoreFmtDebug.fmt (self : edwards.EdwardsPoint) (f : core.fmt.Formatter) : Result ((core.result.Result Unit core.fmt.Error) × core.fmt.Formatter) := do let a ← core.fmt.rt.Argument.new_debug (core.fmt.DebugShared backend.serial.u64.field.FieldElement51.Insts.CoreFmtDebug) self.X let a1 ← core.fmt.rt.Argument.new_debug (core.fmt.DebugShared backend.serial.u64.field.FieldElement51.Insts.CoreFmtDebug) self.Y let a2 ← core.fmt.rt.Argument.new_debug (core.fmt.DebugShared backend.serial.u64.field.FieldElement51.Insts.CoreFmtDebug) self.Z let a3 ← core.fmt.rt.Argument.new_debug (core.fmt.DebugShared backend.serial.u64.field.FieldElement51.Insts.CoreFmtDebug) self.T let a4 ← core.fmt.Arguments.new (Array.make 48#usize [ 18#u8, 69#u8, 100#u8, 119#u8, 97#u8, 114#u8, 100#u8, 115#u8, 80#u8, 111#u8, 105#u8, 110#u8, 116#u8, 123#u8, 10#u8, 9#u8, 88#u8, 58#u8, 32#u8, 192#u8, 6#u8, 44#u8, 10#u8, 9#u8, 89#u8, 58#u8, 32#u8, 192#u8, 6#u8, 44#u8, 10#u8, 9#u8, 90#u8, 58#u8, 32#u8, 192#u8, 6#u8, 44#u8, 10#u8, 9#u8, 84#u8, 58#u8, 32#u8, 192#u8, 2#u8, 10#u8, 125#u8, 0#u8 ]) (Array.make 4#usize [ a, a1, a2, a3 ]) core.fmt.Formatter.write_fmt f a4 /-- Trait implementation: [curve25519_dalek::edwards::{impl core::fmt::Debug for curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/edwards.rs', lines 1266:0-1274:1 -/ @[reducible] def edwards.EdwardsPoint.Insts.CoreFmtDebug : core.fmt.Debug edwards.EdwardsPoint := { fmt := edwards.EdwardsPoint.Insts.CoreFmtDebug.fmt } /-- Trait implementation: [curve25519_dalek::field::{impl core::cmp::PartialEq for curve25519_dalek::backend::serial::u64::field::FieldElement51}] Source: 'curve25519-dalek/src/field.rs', lines 86:0-90:1 -/ @[reducible] def backend.serial.u64.field.FieldElement51.Insts.CoreCmpPartialEqFieldElement51 : core.cmp.PartialEq backend.serial.u64.field.FieldElement51 backend.serial.u64.field.FieldElement51 := { eq := backend.serial.u64.field.FieldElement51.Insts.CoreCmpPartialEqFieldElement51.eq } /-- Trait implementation: [curve25519_dalek::field::{impl core::cmp::Eq for curve25519_dalek::backend::serial::u64::field::FieldElement51}] Source: 'curve25519-dalek/src/field.rs', lines 84:0-84:27 -/ @[reducible] def backend.serial.u64.field.FieldElement51.Insts.CoreCmpEq : core.cmp.Eq backend.serial.u64.field.FieldElement51 := { partialEqInst := backend.serial.u64.field.FieldElement51.Insts.CoreCmpPartialEqFieldElement51 assert_fields_are_eq := backend.serial.u64.field.FieldElement51.Insts.CoreCmpEq.assert_fields_are_eq } /-- Trait implementation: [curve25519_dalek::field::{impl subtle::ConstantTimeEq for curve25519_dalek::backend::serial::u64::field::FieldElement51}] Source: 'curve25519-dalek/src/field.rs', lines 92:0-99:1 -/ @[reducible] def backend.serial.u64.field.FieldElement51.Insts.SubtleConstantTimeEq : subtle.ConstantTimeEq backend.serial.u64.field.FieldElement51 := { ct_eq := backend.serial.u64.field.FieldElement51.Insts.SubtleConstantTimeEq.ct_eq } /-- [curve25519_dalek::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::is_zero]: Source: 'curve25519-dalek/src/field.rs', lines 119:4-124:5 -/ def field.FieldElement51.is_zero (self : backend.serial.u64.field.FieldElement51) : Result subtle.Choice := do let zero := Array.repeat 32#usize 0#u8 let bytes ← backend.serial.u64.field.FieldElement51.as_bytes self let s ← lift (Array.to_slice bytes) let s1 ← lift (Array.to_slice zero) Slice.Insts.SubtleConstantTimeEq.ct_eq U8.Insts.SubtleConstantTimeEq s s1 /-- [curve25519_dalek::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::pow_p58]: Source: 'curve25519-dalek/src/field.rs', lines 228:4-237:5 -/ def field.FieldElement51.pow_p58 (self : backend.serial.u64.field.FieldElement51) : Result backend.serial.u64.field.FieldElement51 := do let (t19, _) ← field.FieldElement51.pow22501 self let t20 ← backend.serial.u64.field.FieldElement51.pow2k t19 2#u32 SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul self t20 /-- [curve25519_dalek::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::sqrt_ratio_i]: Source: 'curve25519-dalek/src/field.rs', lines 251:4-297:5 -/ def field.FieldElement51.sqrt_ratio_i (u : backend.serial.u64.field.FieldElement51) (v : backend.serial.u64.field.FieldElement51) : Result (subtle.Choice × backend.serial.u64.field.FieldElement51) := do let fe ← backend.serial.u64.field.FieldElement51.square v let v3 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul fe v let fe1 ← backend.serial.u64.field.FieldElement51.square v3 let v7 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul fe1 v let fe2 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul u v3 let fe3 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul u v7 let fe4 ← field.FieldElement51.pow_p58 fe3 let r ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul fe2 fe4 let fe5 ← backend.serial.u64.field.FieldElement51.square r let check ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul v fe5 let i ← backend.serial.u64.constants.SQRT_M1 let correct_sign_sqrt ← backend.serial.u64.field.FieldElement51.Insts.SubtleConstantTimeEq.ct_eq check u let fe6 ← SharedAFieldElement51.Insts.CoreOpsArithNegFieldElement51.neg u let flipped_sign_sqrt ← backend.serial.u64.field.FieldElement51.Insts.SubtleConstantTimeEq.ct_eq check fe6 let fe7 ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul fe6 i let flipped_sign_sqrt_i ← backend.serial.u64.field.FieldElement51.Insts.SubtleConstantTimeEq.ct_eq check fe7 let r_prime ← SharedAFieldElement51.Insts.CoreOpsArithMulSharedBFieldElement51FieldElement51.mul i r let c ← subtle.Choice.Insts.CoreOpsBitBitOrChoiceChoice.bitor flipped_sign_sqrt flipped_sign_sqrt_i let r1 ← backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_assign r r_prime c let r_is_negative ← field.FieldElement51.is_negative r1 let r_neg ← SharedAFieldElement51.Insts.CoreOpsArithNegFieldElement51.neg r1 let r2 ← backend.serial.u64.field.FieldElement51.Insts.SubtleConditionallySelectable.conditional_assign r1 r_neg r_is_negative let was_nonzero_square ← subtle.Choice.Insts.CoreOpsBitBitOrChoiceChoice.bitor correct_sign_sqrt flipped_sign_sqrt ok (was_nonzero_square, r2) /-- [curve25519_dalek::field::{curve25519_dalek::backend::serial::u64::field::FieldElement51}::invsqrt]: Source: 'curve25519-dalek/src/field.rs', lines 311:4-313:5 -/ def field.FieldElement51.invsqrt (self : backend.serial.u64.field.FieldElement51) : Result (subtle.Choice × backend.serial.u64.field.FieldElement51) := do let fe ← backend.serial.u64.field.FieldElement51.ONE field.FieldElement51.sqrt_ratio_i fe self /-- [curve25519_dalek::edwards::{impl core::ops::arith::Add<&'b curve25519_dalek::edwards::EdwardsPoint, curve25519_dalek::edwards::EdwardsPoint> for curve25519_dalek::edwards::EdwardsPoint}::add]: Source: 'curve25519-dalek/src/macros.rs', lines 19:12-21:13 Visibility: public -/ def edwards.EdwardsPoint.Insts.CoreOpsArithAddSharedBEdwardsPointEdwardsPoint.add (self : edwards.EdwardsPoint) (rhs : edwards.EdwardsPoint) : Result edwards.EdwardsPoint := do SharedAEdwardsPoint.Insts.CoreOpsArithAddSharedBEdwardsPointEdwardsPoint.add self rhs /-- Trait implementation: [curve25519_dalek::edwards::{impl core::ops::arith::Add<&'b curve25519_dalek::edwards::EdwardsPoint, curve25519_dalek::edwards::EdwardsPoint> for curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/macros.rs', lines 17:8-22:9 -/ @[reducible] def edwards.EdwardsPoint.Insts.CoreOpsArithAddSharedBEdwardsPointEdwardsPoint : core.ops.arith.Add edwards.EdwardsPoint edwards.EdwardsPoint edwards.EdwardsPoint := { add := edwards.EdwardsPoint.Insts.CoreOpsArithAddSharedBEdwardsPointEdwardsPoint.add } /-- [curve25519_dalek::edwards::{impl core::ops::arith::Add for &'a curve25519_dalek::edwards::EdwardsPoint}::add]: Source: 'curve25519-dalek/src/macros.rs', lines 26:12-28:13 Visibility: public -/ def SharedAEdwardsPoint.Insts.CoreOpsArithAddEdwardsPointEdwardsPoint.add (self : edwards.EdwardsPoint) (rhs : edwards.EdwardsPoint) : Result edwards.EdwardsPoint := do SharedAEdwardsPoint.Insts.CoreOpsArithAddSharedBEdwardsPointEdwardsPoint.add self rhs /-- Trait implementation: [curve25519_dalek::edwards::{impl core::ops::arith::Add for &'a curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/macros.rs', lines 24:8-29:9 -/ @[reducible] def SharedAEdwardsPoint.Insts.CoreOpsArithAddEdwardsPointEdwardsPoint : core.ops.arith.Add edwards.EdwardsPoint edwards.EdwardsPoint edwards.EdwardsPoint := { add := SharedAEdwardsPoint.Insts.CoreOpsArithAddEdwardsPointEdwardsPoint.add } /-- [curve25519_dalek::edwards::{impl core::ops::arith::Add for curve25519_dalek::edwards::EdwardsPoint}::add]: Source: 'curve25519-dalek/src/macros.rs', lines 33:12-35:13 Visibility: public -/ def edwards.EdwardsPoint.Insts.CoreOpsArithAddEdwardsPointEdwardsPoint.add (self : edwards.EdwardsPoint) (rhs : edwards.EdwardsPoint) : Result edwards.EdwardsPoint := do SharedAEdwardsPoint.Insts.CoreOpsArithAddSharedBEdwardsPointEdwardsPoint.add self rhs /-- Trait implementation: [curve25519_dalek::edwards::{impl core::ops::arith::Add for curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/macros.rs', lines 31:8-36:9 -/ @[reducible] def edwards.EdwardsPoint.Insts.CoreOpsArithAddEdwardsPointEdwardsPoint : core.ops.arith.Add edwards.EdwardsPoint edwards.EdwardsPoint edwards.EdwardsPoint := { add := edwards.EdwardsPoint.Insts.CoreOpsArithAddEdwardsPointEdwardsPoint.add } /-- [curve25519_dalek::edwards::{impl core::ops::arith::AddAssign for curve25519_dalek::edwards::EdwardsPoint}::add_assign]: Source: 'curve25519-dalek/src/macros.rs', lines 44:12-46:13 Visibility: public -/ def edwards.EdwardsPoint.Insts.CoreOpsArithAddAssignEdwardsPoint.add_assign (self : edwards.EdwardsPoint) (rhs : edwards.EdwardsPoint) : Result edwards.EdwardsPoint := do edwards.EdwardsPoint.Insts.CoreOpsArithAddAssignSharedBEdwardsPoint.add_assign self rhs /-- Trait implementation: [curve25519_dalek::edwards::{impl core::ops::arith::AddAssign for curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/macros.rs', lines 43:8-47:9 -/ @[reducible] def edwards.EdwardsPoint.Insts.CoreOpsArithAddAssignEdwardsPoint : core.ops.arith.AddAssign edwards.EdwardsPoint edwards.EdwardsPoint := { add_assign := edwards.EdwardsPoint.Insts.CoreOpsArithAddAssignEdwardsPoint.add_assign } /-- [curve25519_dalek::edwards::{impl core::ops::arith::Sub<&'b curve25519_dalek::edwards::EdwardsPoint, curve25519_dalek::edwards::EdwardsPoint> for curve25519_dalek::edwards::EdwardsPoint}::sub]: Source: 'curve25519-dalek/src/macros.rs', lines 56:12-58:13 Visibility: public -/ def edwards.EdwardsPoint.Insts.CoreOpsArithSubSharedBEdwardsPointEdwardsPoint.sub (self : edwards.EdwardsPoint) (rhs : edwards.EdwardsPoint) : Result edwards.EdwardsPoint := do SharedAEdwardsPoint.Insts.CoreOpsArithSubSharedBEdwardsPointEdwardsPoint.sub self rhs /-- Trait implementation: [curve25519_dalek::edwards::{impl core::ops::arith::Sub<&'b curve25519_dalek::edwards::EdwardsPoint, curve25519_dalek::edwards::EdwardsPoint> for curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/macros.rs', lines 54:8-59:9 -/ @[reducible] def edwards.EdwardsPoint.Insts.CoreOpsArithSubSharedBEdwardsPointEdwardsPoint : core.ops.arith.Sub edwards.EdwardsPoint edwards.EdwardsPoint edwards.EdwardsPoint := { sub := edwards.EdwardsPoint.Insts.CoreOpsArithSubSharedBEdwardsPointEdwardsPoint.sub } /-- [curve25519_dalek::edwards::{impl core::ops::arith::Sub for &'a curve25519_dalek::edwards::EdwardsPoint}::sub]: Source: 'curve25519-dalek/src/macros.rs', lines 63:12-65:13 Visibility: public -/ def SharedAEdwardsPoint.Insts.CoreOpsArithSubEdwardsPointEdwardsPoint.sub (self : edwards.EdwardsPoint) (rhs : edwards.EdwardsPoint) : Result edwards.EdwardsPoint := do SharedAEdwardsPoint.Insts.CoreOpsArithSubSharedBEdwardsPointEdwardsPoint.sub self rhs /-- Trait implementation: [curve25519_dalek::edwards::{impl core::ops::arith::Sub for &'a curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/macros.rs', lines 61:8-66:9 -/ @[reducible] def SharedAEdwardsPoint.Insts.CoreOpsArithSubEdwardsPointEdwardsPoint : core.ops.arith.Sub edwards.EdwardsPoint edwards.EdwardsPoint edwards.EdwardsPoint := { sub := SharedAEdwardsPoint.Insts.CoreOpsArithSubEdwardsPointEdwardsPoint.sub } /-- [curve25519_dalek::edwards::{impl core::ops::arith::Sub for curve25519_dalek::edwards::EdwardsPoint}::sub]: Source: 'curve25519-dalek/src/macros.rs', lines 70:12-72:13 Visibility: public -/ def edwards.EdwardsPoint.Insts.CoreOpsArithSubEdwardsPointEdwardsPoint.sub (self : edwards.EdwardsPoint) (rhs : edwards.EdwardsPoint) : Result edwards.EdwardsPoint := do SharedAEdwardsPoint.Insts.CoreOpsArithSubSharedBEdwardsPointEdwardsPoint.sub self rhs /-- Trait implementation: [curve25519_dalek::edwards::{impl core::ops::arith::Sub for curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/macros.rs', lines 68:8-73:9 -/ @[reducible] def edwards.EdwardsPoint.Insts.CoreOpsArithSubEdwardsPointEdwardsPoint : core.ops.arith.Sub edwards.EdwardsPoint edwards.EdwardsPoint edwards.EdwardsPoint := { sub := edwards.EdwardsPoint.Insts.CoreOpsArithSubEdwardsPointEdwardsPoint.sub } /-- [curve25519_dalek::edwards::{impl core::ops::arith::SubAssign for curve25519_dalek::edwards::EdwardsPoint}::sub_assign]: Source: 'curve25519-dalek/src/macros.rs', lines 81:12-83:13 Visibility: public -/ def edwards.EdwardsPoint.Insts.CoreOpsArithSubAssignEdwardsPoint.sub_assign (self : edwards.EdwardsPoint) (rhs : edwards.EdwardsPoint) : Result edwards.EdwardsPoint := do edwards.EdwardsPoint.Insts.CoreOpsArithSubAssignSharedBEdwardsPoint.sub_assign self rhs /-- Trait implementation: [curve25519_dalek::edwards::{impl core::ops::arith::SubAssign for curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/macros.rs', lines 80:8-84:9 -/ @[reducible] def edwards.EdwardsPoint.Insts.CoreOpsArithSubAssignEdwardsPoint : core.ops.arith.SubAssign edwards.EdwardsPoint edwards.EdwardsPoint := { sub_assign := edwards.EdwardsPoint.Insts.CoreOpsArithSubAssignEdwardsPoint.sub_assign } /-- [curve25519_dalek::edwards::{impl core::ops::arith::Mul<&'b curve25519_dalek::scalar::Scalar, curve25519_dalek::edwards::EdwardsPoint> for curve25519_dalek::edwards::EdwardsPoint}::mul]: Source: 'curve25519-dalek/src/macros.rs', lines 93:12-95:13 Visibility: public -/ def edwards.EdwardsPoint.Insts.CoreOpsArithMulSharedBScalarEdwardsPoint.mul (self : edwards.EdwardsPoint) (rhs : scalar.Scalar) : Result edwards.EdwardsPoint := do SharedAEdwardsPoint.Insts.CoreOpsArithMulSharedBScalarEdwardsPoint.mul self rhs /-- Trait implementation: [curve25519_dalek::edwards::{impl core::ops::arith::Mul<&'b curve25519_dalek::scalar::Scalar, curve25519_dalek::edwards::EdwardsPoint> for curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/macros.rs', lines 91:8-96:9 -/ @[reducible] def edwards.EdwardsPoint.Insts.CoreOpsArithMulSharedBScalarEdwardsPoint : core.ops.arith.Mul edwards.EdwardsPoint scalar.Scalar edwards.EdwardsPoint := { mul := edwards.EdwardsPoint.Insts.CoreOpsArithMulSharedBScalarEdwardsPoint.mul } /-- [curve25519_dalek::edwards::{impl core::ops::arith::Mul<&'b curve25519_dalek::edwards::EdwardsPoint, curve25519_dalek::edwards::EdwardsPoint> for curve25519_dalek::scalar::Scalar}::mul]: Source: 'curve25519-dalek/src/macros.rs', lines 93:12-95:13 Visibility: public -/ def scalar.Scalar.Insts.CoreOpsArithMulSharedBEdwardsPointEdwardsPoint.mul (self : scalar.Scalar) (rhs : edwards.EdwardsPoint) : Result edwards.EdwardsPoint := do SharedAScalar.Insts.CoreOpsArithMulSharedBEdwardsPointEdwardsPoint.mul self rhs /-- Trait implementation: [curve25519_dalek::edwards::{impl core::ops::arith::Mul<&'b curve25519_dalek::edwards::EdwardsPoint, curve25519_dalek::edwards::EdwardsPoint> for curve25519_dalek::scalar::Scalar}] Source: 'curve25519-dalek/src/macros.rs', lines 91:8-96:9 -/ @[reducible] def scalar.Scalar.Insts.CoreOpsArithMulSharedBEdwardsPointEdwardsPoint : core.ops.arith.Mul scalar.Scalar edwards.EdwardsPoint edwards.EdwardsPoint := { mul := scalar.Scalar.Insts.CoreOpsArithMulSharedBEdwardsPointEdwardsPoint.mul } /-- Trait implementation: [curve25519_dalek::edwards::{impl core::ops::arith::Mul for &'a curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/macros.rs', lines 98:8-103:9 -/ @[reducible] def SharedAEdwardsPoint.Insts.CoreOpsArithMulScalarEdwardsPoint : core.ops.arith.Mul edwards.EdwardsPoint scalar.Scalar edwards.EdwardsPoint := { mul := SharedAEdwardsPoint.Insts.CoreOpsArithMulScalarEdwardsPoint.mul } /-- Trait implementation: [curve25519_dalek::edwards::{impl core::ops::arith::Mul for &'a curve25519_dalek::scalar::Scalar}] Source: 'curve25519-dalek/src/macros.rs', lines 98:8-103:9 -/ @[reducible] def SharedAScalar.Insts.CoreOpsArithMulEdwardsPointEdwardsPoint : core.ops.arith.Mul scalar.Scalar edwards.EdwardsPoint edwards.EdwardsPoint := { mul := SharedAScalar.Insts.CoreOpsArithMulEdwardsPointEdwardsPoint.mul } /-- [curve25519_dalek::edwards::{impl core::ops::arith::Mul for curve25519_dalek::edwards::EdwardsPoint}::mul]: Source: 'curve25519-dalek/src/macros.rs', lines 107:12-109:13 Visibility: public -/ def edwards.EdwardsPoint.Insts.CoreOpsArithMulScalarEdwardsPoint.mul (self : edwards.EdwardsPoint) (rhs : scalar.Scalar) : Result edwards.EdwardsPoint := do SharedAEdwardsPoint.Insts.CoreOpsArithMulSharedBScalarEdwardsPoint.mul self rhs /-- Trait implementation: [curve25519_dalek::edwards::{impl core::ops::arith::Mul for curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/macros.rs', lines 105:8-110:9 -/ @[reducible] def edwards.EdwardsPoint.Insts.CoreOpsArithMulScalarEdwardsPoint : core.ops.arith.Mul edwards.EdwardsPoint scalar.Scalar edwards.EdwardsPoint := { mul := edwards.EdwardsPoint.Insts.CoreOpsArithMulScalarEdwardsPoint.mul } /-- Trait implementation: [curve25519_dalek::edwards::{impl core::ops::arith::Mul for curve25519_dalek::scalar::Scalar}] Source: 'curve25519-dalek/src/macros.rs', lines 105:8-110:9 -/ @[reducible] def scalar.Scalar.Insts.CoreOpsArithMulEdwardsPointEdwardsPoint : core.ops.arith.Mul scalar.Scalar edwards.EdwardsPoint edwards.EdwardsPoint := { mul := scalar.Scalar.Insts.CoreOpsArithMulEdwardsPointEdwardsPoint.mul } /-- [curve25519_dalek::edwards::{impl core::ops::arith::MulAssign for curve25519_dalek::edwards::EdwardsPoint}::mul_assign]: Source: 'curve25519-dalek/src/macros.rs', lines 118:12-120:13 Visibility: public -/ def edwards.EdwardsPoint.Insts.CoreOpsArithMulAssignScalar.mul_assign (self : edwards.EdwardsPoint) (rhs : scalar.Scalar) : Result edwards.EdwardsPoint := do edwards.EdwardsPoint.Insts.CoreOpsArithMulAssignSharedBScalar.mul_assign self rhs /-- Trait implementation: [curve25519_dalek::edwards::{impl core::ops::arith::MulAssign for curve25519_dalek::edwards::EdwardsPoint}] Source: 'curve25519-dalek/src/macros.rs', lines 117:8-121:9 -/ @[reducible] def edwards.EdwardsPoint.Insts.CoreOpsArithMulAssignScalar : core.ops.arith.MulAssign edwards.EdwardsPoint scalar.Scalar := { mul_assign := edwards.EdwardsPoint.Insts.CoreOpsArithMulAssignScalar.mul_assign } end curve25519_dalek