binius_math/
tower.rs

1// Copyright 2025 Irreducible Inc.
2
3// TODO: Introduce "aes-tower" feature that exports AES tower instead. This has to after the
4// TowerFamily is fully removed.
5pub use binius_field::{
6	BinaryField1b as B1, BinaryField8b as B8, BinaryField16b as B16, BinaryField32b as B32,
7	BinaryField64b as B64, BinaryField128b as B128,
8};
9use binius_field::{
10	ExtensionField, PackedExtension, PackedField, TowerField, as_packed_field::PackScalar,
11	underlier::UnderlierType,
12};
13
14trait_set::trait_set! {
15	/// The top packed field in a tower.
16	pub trait TowerTop =
17		TowerField
18		+ ExtensionField<B1>
19		+ ExtensionField<B8>
20		+ ExtensionField<B16>
21		+ ExtensionField<B32>
22		+ ExtensionField<B64>
23		+ ExtensionField<B128>;
24
25	/// A packed field type that is the top packed field in a tower.
26	pub trait PackedTop =
27		PackedField
28		+ PackedExtension<B1>
29		+ PackedExtension<B8>
30		+ PackedExtension<B16>
31		+ PackedExtension<B32>
32		+ PackedExtension<B64>
33		+ PackedExtension<B128>;
34
35		/// An underlier with associated packed types for fields in a tower.
36	pub trait TowerUnderlier =
37		UnderlierType
38		+ PackScalar<B1>
39		+ PackScalar<B8>
40		+ PackScalar<B16>
41		+ PackScalar<B32>
42		+ PackScalar<B64>
43		+ PackScalar<B128>;
44}