Skip to content

Commit 5737f6f

Browse files
committed
feat(Verified-zkEVM#116): derive statistical FS HVZK from perfect transfer
1 parent 650c53c commit 5737f6f

1 file changed

Lines changed: 67 additions & 0 deletions

File tree

ArkLib/OracleReduction/FiatShamir/Basic.lean

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -811,6 +811,21 @@ def fiatShamir_hvzkTransferResidual
811811
Reduction.isHVZK init impl rel R →
812812
Reduction.isHVZK fsInit fsImpl rel R.fiatShamir
813813

814+
omit [VCVCompatible StmtIn] in
815+
/-- A perfect Fiat-Shamir HVZK transfer residual supplies the statistical transfer residual at
816+
any target error budget. -/
817+
theorem fiatShamir_statisticalHVZKTransferResidual.of_perfectTransfer
818+
{τ : Type}
819+
(init : ProbComp σ) (impl : QueryImpl oSpec (StateT σ ProbComp))
820+
(fsInit : ProbComp τ)
821+
(fsImpl : QueryImpl (oSpec + fsChallengeOracle StmtIn pSpec) (StateT τ ProbComp))
822+
(rel : Set (StmtIn × WitIn)) (ε : ℝ≥0)
823+
(R : Reduction oSpec StmtIn WitIn StmtOut WitOut pSpec)
824+
(hTransfer : fiatShamir_hvzkTransferResidual init impl fsInit fsImpl rel R) :
825+
fiatShamir_statisticalHVZKTransferResidual init impl fsInit fsImpl rel ε R := by
826+
intro hHVZK
827+
exact (hTransfer hHVZK).isStatHVZK ε
828+
814829
/-- Basic Fiat-Shamir perfect honest-verifier zero-knowledge follows immediately from a discharged
815830
transfer residual. This isolates the remaining proof obligation (simulator construction plus
816831
transcript distribution coupling) without claiming to solve it. -/
@@ -826,6 +841,20 @@ theorem fiatShamir_isHVZK_of_transfer
826841
Reduction.isHVZK fsInit fsImpl rel R.fiatShamir :=
827842
hTransfer hHVZK
828843

844+
omit [VCVCompatible StmtIn] in
845+
/-- Basic Fiat-Shamir statistical HVZK follows from the stronger perfect transfer residual. -/
846+
theorem fiatShamir_isStatHVZK_of_transfer
847+
{τ : Type}
848+
(init : ProbComp σ) (impl : QueryImpl oSpec (StateT σ ProbComp))
849+
(fsInit : ProbComp τ)
850+
(fsImpl : QueryImpl (oSpec + fsChallengeOracle StmtIn pSpec) (StateT τ ProbComp))
851+
(rel : Set (StmtIn × WitIn)) (ε : ℝ≥0)
852+
(R : Reduction oSpec StmtIn WitIn StmtOut WitOut pSpec)
853+
(hTransfer : fiatShamir_hvzkTransferResidual init impl fsInit fsImpl rel R)
854+
(hHVZK : Reduction.isHVZK init impl rel R) :
855+
Reduction.isStatHVZK fsInit fsImpl rel R.fiatShamir ε :=
856+
(hTransfer hHVZK).isStatHVZK ε
857+
829858
/-- Basic Fiat-Shamir perfect HVZK can be restricted to a sub-relation after applying a perfect
830859
simulator-transfer residual on the larger relation. -/
831860
theorem fiatShamir_isHVZK_of_transfer_mono_relation
@@ -841,6 +870,40 @@ theorem fiatShamir_isHVZK_of_transfer_mono_relation
841870
(fiatShamir_isHVZK_of_transfer init impl fsInit fsImpl rel R hTransfer hHVZK).mono_relation
842871
hsub
843872

873+
omit [VCVCompatible StmtIn] in
874+
/-- Basic Fiat-Shamir statistical HVZK can be restricted to a sub-relation after applying the
875+
stronger perfect transfer residual on the larger relation. -/
876+
theorem fiatShamir_isStatHVZK_of_transfer_mono_relation
877+
{τ : Type}
878+
(init : ProbComp σ) (impl : QueryImpl oSpec (StateT σ ProbComp))
879+
(fsInit : ProbComp τ)
880+
(fsImpl : QueryImpl (oSpec + fsChallengeOracle StmtIn pSpec) (StateT τ ProbComp))
881+
{rel relSub : Set (StmtIn × WitIn)} (hsub : relSub ⊆ rel) (ε : ℝ≥0)
882+
(R : Reduction oSpec StmtIn WitIn StmtOut WitOut pSpec)
883+
(hTransfer : fiatShamir_hvzkTransferResidual init impl fsInit fsImpl rel R)
884+
(hHVZK : Reduction.isHVZK init impl rel R) :
885+
Reduction.isStatHVZK fsInit fsImpl relSub R.fiatShamir ε :=
886+
_root_.Reduction.isHVZK.isStatHVZK
887+
((hTransfer hHVZK).mono_relation hsub)
888+
ε
889+
890+
omit [VCVCompatible StmtIn] in
891+
/-- Basic Fiat-Shamir statistical HVZK can be restricted to a sub-relation and relaxed to a larger
892+
error budget after applying the stronger perfect transfer residual on the larger relation. -/
893+
theorem fiatShamir_isStatHVZK_of_transfer_mono_relation_error
894+
{τ : Type}
895+
(init : ProbComp σ) (impl : QueryImpl oSpec (StateT σ ProbComp))
896+
(fsInit : ProbComp τ)
897+
(fsImpl : QueryImpl (oSpec + fsChallengeOracle StmtIn pSpec) (StateT τ ProbComp))
898+
{rel relSub : Set (StmtIn × WitIn)} (hsub : relSub ⊆ rel) {ε₁ ε₂ : ℝ≥0}
899+
(R : Reduction oSpec StmtIn WitIn StmtOut WitOut pSpec)
900+
(hTransfer : fiatShamir_hvzkTransferResidual init impl fsInit fsImpl rel R)
901+
(hle : ε₁ ≤ ε₂)
902+
(hHVZK : Reduction.isHVZK init impl rel R) :
903+
Reduction.isStatHVZK fsInit fsImpl relSub R.fiatShamir ε₂ :=
904+
(fiatShamir_isStatHVZK_of_transfer_mono_relation init impl fsInit fsImpl hsub ε₁ R
905+
hTransfer hHVZK).mono_error hle
906+
844907
/-- If the Fiat-Shamir simulator-transfer residual is discharged at zero statistical error, then
845908
basic Fiat-Shamir preserves perfect HVZK. This is only the zero-error API wrapper: the simulator
846909
construction remains the content of `fiatShamir_statisticalHVZKTransferResidual`. -/
@@ -866,8 +929,12 @@ theorem fiatShamir_isHVZK_of_HVZK_zero
866929
#print axioms Reduction.fiatShamir_isStatHVZK_of_HVZK_mono_relation
867930
#print axioms Reduction.fiatShamir_isStatHVZK_of_HVZK_mono_relation_error
868931
#print axioms Reduction.fiatShamir_hvzkTransferResidual
932+
#print axioms Reduction.fiatShamir_statisticalHVZKTransferResidual.of_perfectTransfer
869933
#print axioms Reduction.fiatShamir_isHVZK_of_transfer
934+
#print axioms Reduction.fiatShamir_isStatHVZK_of_transfer
870935
#print axioms Reduction.fiatShamir_isHVZK_of_transfer_mono_relation
936+
#print axioms Reduction.fiatShamir_isStatHVZK_of_transfer_mono_relation
937+
#print axioms Reduction.fiatShamir_isStatHVZK_of_transfer_mono_relation_error
871938
#print axioms Reduction.fiatShamir_isHVZK_of_HVZK_zero
872939

873940
end ZeroKnowledgeTransfer

0 commit comments

Comments
 (0)