pasta-pallas-verified/verification/PallasFp.llbc

1 line
2.2 MiB
Text
Raw Normal View History

{"charon_version":"0.1.212","translated":{"crate_name":"pasta_curves","options":{"ullbc":false,"precise_drops":false,"skip_borrowck":false,"mir":null,"rustc_args":[],"targets":[],"monomorphize":false,"monomorphize_mut":null,"start_from":["crate::fields::fp"],"start_from_if_exists":[],"start_from_attribute":null,"start_from_pub":false,"include":[],"opaque":["crate::fields::fp::_::fmt","crate::fields::fp::_::pow_by_t_minus1_over2","crate::fields::fp::_::get_lower_32","crate::fields::fp::_::ZETA","crate::fields::fp::_::from_uniform_bytes","crate::fields::fp::_::sqrt","crate::fields::fp::_::sqrt_ratio","crate::fields::fp::_::random","crate::fields::fp::_::sum","crate::fields::fp::_::product","crate::fields::fp::_::cmp","crate::fields::fp::_::partial_cmp"],"exclude":[],"extract_opaque_bodies":false,"translate_all_methods":false,"duplicate_defaulted_methods":true,"lift_associated_types":["*"],"hide_marker_traits":true,"remove_adt_clauses":true,"hide_allocator":true,"remove_unused_self_clauses":true,"desugar_drops":false,"ops_to_function_calls":true,"index_to_function_calls":true,"treat_box_as_builtin":true,"raw_consts":false,"unsized_strings":false,"reconstruct_fallible_operations":true,"reconstruct_asserts":true,"unbind_item_vars":true,"print_original_ullbc":false,"print_ullbc":false,"print_built_llbc":false,"print_llbc":false,"dest_dir":null,"dest_file":"/home/oho/GitClone/Claude/FormalVerification/pasta-pallas-verified/verification/PallasFp.llbc","no_dedup_serialized_ast":false,"format":null,"no_serialize":false,"no_typecheck":false,"no_normalize":false,"abort_on_error":false,"error_on_warnings":false,"preset":"Aeneas"},"target_information":[{"key":"x86_64-unknown-linux-gnu","value":{"target_pointer_size":8,"is_little_endian":true}}],"files":[{"id":0,"name":{"Local":"src/fields.rs"},"crate_name":"pasta_curves","contents":"//! This module contains implementations for the two finite fields of the Pallas\n//! and Vesta curves.\n\nmod fp;\nmod fq;\n\npub use fp::*;\npub use fq::*;\n\n/// Converts 64-bit little-endian limbs to 32-bit little endian limbs.\n#[cfg(feature = \"gpu\")]\nfn u64_to_u32(limbs: &[u64]) -> alloc::vec::Vec<u32> {\n limbs\n .iter()\n .flat_map(|limb| [(limb & 0xFFFF_FFFF) as u32, (limb >> 32) as u32].into_iter())\n .collect()\n}\n\n#[cfg(feature = \"gpu\")]\n#[test]\nfn test_u64_to_u32() {\n use rand::{RngCore, SeedableRng};\n use rand_xorshift::XorShiftRng;\n\n let mut rng = XorShiftRng::from_seed([0; 16]);\n let u64_limbs: alloc::vec::Vec<u64> = (0..6).map(|_| rng.next_u64()).collect();\n let u32_limbs = crate::fields::u64_to_u32(&u64_limbs);\n\n let u64_le_bytes: alloc::vec::Vec<u8> = u64_limbs\n .iter()\n .flat_map(|limb| limb.to_le_bytes())\n .collect();\n let u32_le_bytes: alloc::vec::Vec<u8> = u32_limbs\n .iter()\n .flat_map(|limb| limb.to_le_bytes())\n .collect();\n\n assert_eq!(u64_le_bytes, u32_le_bytes);\n}\n"},{"id":1,"name":{"Local":"src/lib.rs"},"crate_name":"pasta_curves","contents":"//! Implementation of the Pallas / Vesta curve cycle.\n\n#![no_std]\n#![cfg_attr(docsrs, feature(doc_cfg))]\n#![allow(unknown_lints)]\n#![allow(clippy::op_ref, clippy::same_item_push, clippy::upper_case_acronyms)]\n#![deny(rustdoc::broken_intra_doc_links)]\n#![deny(missing_debug_implementations)]\n#![deny(missing_docs)]\n#![deny(unsafe_code)]\n\n#[cfg(feature = \"alloc\")]\nextern crate alloc;\n\n#[cfg(test)]\n#[macro_use]\nextern crate std;\n\n#[macro_use]\nmod macros;\nmod curves;\nmod fields;\n\npub mod arithmetic;\n#[cfg(feature = \"deferred\")]\n#[cfg_attr(docsrs, doc(cfg(feature = \"deferred\")))]\npub mod deferred;\npub mod pallas;\npub mod vesta;\n\n#[cfg(feature = \"alloc\")]\nmod hashtocurve;\n\n#[cfg(feature = \"serde\")]\nmod serde_impl;\n\npub use curves::*;\npub use fields::*;\n\npub extern crate group;\n\n#[cfg(feature = \"alloc\")]\n#[test]\nfn test_endo_consistency() {\n use crate::arithmetic::CurveExt;\n use group::{ff::WithSmallOrderMulGroup, Group};\n\n let a = pallas::Point::generator();\n a