@@ -25,7 +25,7 @@ pub trait LogUpGkrEvaluator: Clone + Sync {
25
25
26
26
/// Gets a list of all oracles involved in LogUp-GKR; this is intended to be used in construction of
27
27
/// MLEs.
28
- fn get_oracles ( & self ) -> Vec < LogUpGkrOracle < Self :: BaseField > > ;
28
+ fn get_oracles ( & self ) -> & [ LogUpGkrOracle < Self :: BaseField > ] ;
29
29
30
30
/// Returns the number of random values needed to evaluate a query.
31
31
fn get_num_rand_values ( & self ) -> usize ;
@@ -81,39 +81,32 @@ pub trait LogUpGkrEvaluator: Clone + Sync {
81
81
}
82
82
}
83
83
84
- #[ derive( Clone , Debug , PartialEq , PartialOrd , Eq , Ord ) ]
85
- pub enum LogUpGkrOracle < B : StarkField > {
86
- CurrentRow ( usize ) ,
87
- NextRow ( usize ) ,
88
- PeriodicValue ( Vec < B > ) ,
89
- }
90
-
91
84
impl LogUpGkrEvaluator for ( ) {
92
85
type BaseField = BaseElement ;
93
86
94
87
type PublicInputs = ( ) ;
95
88
96
- fn get_oracles ( & self ) -> Vec < LogUpGkrOracle < Self :: BaseField > > {
97
- unimplemented ! ( )
89
+ fn get_oracles ( & self ) -> & [ LogUpGkrOracle < Self :: BaseField > ] {
90
+ panic ! ( "LogUpGkrEvaluator method called but LogUp-GKR is not implemented" )
98
91
}
99
92
100
93
fn get_num_rand_values ( & self ) -> usize {
101
- unimplemented ! ( )
94
+ panic ! ( "LogUpGkrEvaluator method called but LogUp-GKR is not implemented" )
102
95
}
103
96
104
97
fn get_num_fractions ( & self ) -> usize {
105
- unimplemented ! ( )
98
+ panic ! ( "LogUpGkrEvaluator method called but LogUp-GKR is not implemented" )
106
99
}
107
100
108
101
fn max_degree ( & self ) -> usize {
109
- unimplemented ! ( )
102
+ panic ! ( "LogUpGkrEvaluator method called but LogUp-GKR is not implemented" )
110
103
}
111
104
112
105
fn build_query < E > ( & self , _frame : & EvaluationFrame < E > , _periodic_values : & [ E ] , _query : & mut [ E ] )
113
106
where
114
107
E : FieldElement < BaseField = Self :: BaseField > ,
115
108
{
116
- unimplemented ! ( )
109
+ panic ! ( "LogUpGkrEvaluator method called but LogUp-GKR is not implemented" )
117
110
}
118
111
119
112
fn evaluate_query < F , E > (
@@ -126,13 +119,17 @@ impl LogUpGkrEvaluator for () {
126
119
F : FieldElement < BaseField = Self :: BaseField > ,
127
120
E : FieldElement < BaseField = Self :: BaseField > + ExtensionOf < F > ,
128
121
{
129
- unimplemented ! ( )
122
+ panic ! ( "LogUpGkrEvaluator method called but LogUp-GKR is not implemented" )
130
123
}
124
+ }
131
125
132
- fn compute_claim < E > ( & self , _inputs : & Self :: PublicInputs , _rand_values : & [ E ] ) -> E
133
- where
134
- E : FieldElement < BaseField = Self :: BaseField > ,
135
- {
136
- unimplemented ! ( )
137
- }
126
+ #[ derive( Clone , Debug , PartialEq , PartialOrd , Eq , Ord ) ]
127
+ pub enum LogUpGkrOracle < B : StarkField > {
128
+ // a column with a given index in the main trace segment
129
+ CurrentRow ( usize ) ,
130
+ // a column with a given index in the main trace segment but shifted upwards
131
+ NextRow ( usize ) ,
132
+ // a virtual periodic column defined by its values in a given cycle. Note that the cycle length
133
+ // must be a power of 2.
134
+ PeriodicValue ( Vec < B > ) ,
138
135
}
0 commit comments