इस लेख में, हम inner products के लिए कुछ उपयोगी बीजगणितीय ट्रिक्स (algebraic tricks) दे रहे हैं जो बाद में range proofs प्राप्त करने (और circuits को inner products के रूप में एन्कोड करने) में उपयोगी होंगे। प्रत्येक नियम के साथ एक सरल प्रमाण (proof) दिया जाएगा।
नोटेशन
बोल्ड में दिए गए वेरिएबल्स, जैसे a, एक vector को दर्शाते हैं। जो वेरिएबल्स बोल्ड नहीं हैं, जैसे v, वे एक scalar को दर्शाते हैं। ऑपरेटर ∘ दो vectors का Hadamard product (तत्व-वार गुणा या elementwise multiplication) है, अर्थात् [a1,…,an]∘[b1,…,bn]=[a1b1,…,anbn]। हम किसी समीकरण के “left-hand side” (बाएं पक्ष) और “right-hand side” (दाएं पक्ष) को दर्शाने के लिए क्रमशः “lhs” और “rhs” शॉर्टहैंड का उपयोग करते हैं। एक “summand” जोड़ (addition) का एक तत्व है, उदाहरण के लिए यदि a+b=c है, तो a और b को summands कहा जाएगा। 1 vector सभी ones (एक) का एक vector है, अर्थात् [1,1,…,1]। जब तक अन्यथा न कहा जाए, सभी vectors की लंबाई n समान मानी जाती है।
नियम 1: एक inner product जहां vectors में से एक vectors का योग है, उसका विस्तार किया जा सकता है
मान लीजिए कि हम एक inner product की गणना कर रहे हैं जहां vectors में से एक दो vectors का योग है - उदाहरण के लिए ⟨a+b,c⟩। हम इसे दो inner products के योग में विभाजित कर सकते हैं:
⟨a+b,c⟩=⟨a,c⟩+⟨b,c⟩
प्रमाण (Proof):
lhs को इस प्रकार लिखा जा सकता है
i=1∑n(ai+bi)ci
rhs को इस प्रकार लिखा जा सकता है
i=1∑naici+i=1∑ncibi=i=1∑n(aici+cibi)=i=1∑n(ai+bi)ci
नियम 2: समान terms वाले inner products को संयोजित किया जा सकता है
नीचे दिए गए lhs पर दोनों inner products में एक समान vector c है। इसलिए, उन्हें संयोजित किया जा सकता है:
⟨a,c⟩+⟨b,c⟩=⟨a+b,c⟩
यह वास्तव में lhs और rhs की अदला-बदली के साथ नियम 1 ही है।
इसका प्रमाण नियम 1 के समान ही है।
नियम 3: Vectors को inner product के दूसरी ओर ले जाना
एक inner product को मूल vectors के Hadamard product के साथ 1 vector के रूप में फिर से लिखा जा सकता है:
⟨a,b⟩=⟨1,a∘b⟩
प्रमाण (Proof):
⟨a,b⟩⟨1,a∘b⟩i=1∑naibi=i=1∑naibi=i=1∑n1∗(aibi)=i=1∑n1∗(aibi)
नियम 4: हम दो inner products में समान terms लाने के लिए inner product के किसी एक term में vectors जोड़ सकते हैं
मान लीजिए कि हम एक inner product ⟨x,b+c⟩ और एक inner product ⟨y,b⟩ को जोड़ रहे हैं, और inner products का योग v है। ध्यान दें कि उनके components अलग-अलग हैं, इसलिए हम उन्हें नियम 2 के साथ नहीं जोड़ सकते। फिर भी, निम्नलिखित समानता (equality)
⟨x,b+c⟩+⟨y,b⟩=v
को इस प्रकार लिखा जा सकता है
⟨x+y,b+c⟩=v+⟨y,c⟩
उपरोक्त परिदृश्य (scenario) में, हम दोनों पक्षों में ⟨y,c⟩ जोड़ सकते हैं।
⟨x,b+c⟩+⟨y,b⟩+⟨y,c⟩⟨x,b+c⟩+⟨y,b⟩+⟨y,c⟩=v+⟨y,c⟩=v+⟨y,c⟩
अब हमारे पास समान y terms हैं जिन्हें हम नियम 2 का उपयोग करके संयोजित कर सकते हैं:
⟨x,b+c⟩+⟨y,b⟩+⟨y,c⟩⟨x,b+c⟩+⟨y,b+c⟩⟨x,b+c⟩+⟨y,b+c⟩=v+⟨y,c⟩=v+⟨y,c⟩=v+⟨y,c⟩
अब जब हमने lhs पर समान term ⟨b+c⟩ प्राप्त करने के लिए दो inner products को बाध्य कर दिया है, तो हम नियम 2 का फिर से उपयोग करके उन्हें एक vector में संयोजित कर सकते हैं:
⟨x,b+c⟩+⟨y,b+c⟩⟨x+y,b+c⟩⟨x+y,b+c⟩=v+⟨y,c⟩=v+⟨y,c⟩=v+⟨y,c⟩
इसलिए,
⟨x,b+c⟩+⟨y,b⟩=v
को फिर से इस प्रकार लिखा जा सकता है
⟨x+y,b+c⟩=v+⟨y,c⟩
नियम 5: असंबंधित vectors वाले दो inner products को जोड़ना
हम ⟨a1,b1⟩+⟨a2,b2⟩ को जोड़ सकते हैं (जिनमें कोई vectors समान नहीं हैं) और प्राप्त कर सकते हैं:
⟨a1,b1⟩+⟨a2,b2⟩=⟨a1+a2,b1+b2⟩−⟨a1,b2⟩−⟨a2,b1⟩
प्रमाण (Proof):
⟨a1,b1⟩+⟨a2,b2⟩⟨a1,b1⟩+⟨a2,b2⟩+⟨a1,b2⟩⟨a1,b1⟩+⟨a2,b2⟩+⟨a1,b2⟩⟨a1,b1⟩+⟨a2,b2⟩+⟨a1,b2⟩+⟨a2,b1⟩⟨a1,b1⟩+⟨a2,b2⟩+⟨a1,b2⟩+⟨a2,b1⟩⟨a1,b1⟩+⟨a2,b2⟩+⟨a1,b2⟩+⟨a2,b1⟩⟨a1,b1⟩+⟨a2,b2⟩=⟨a1,b1⟩+⟨a2,b2⟩=⟨a1,b1⟩+⟨a2,b2⟩+⟨a1,b2⟩=⟨a1,b1⟩+⟨a1+a2,b2⟩=⟨a1,b1⟩+⟨a1+a2,b2⟩+⟨a2,b1⟩=⟨a1+a2,b1⟩+⟨a1+a2,b2⟩=⟨a1+a2,b1+b2⟩=⟨a1+a2,b1+b2⟩−⟨a1,b2⟩−⟨a2,b1⟩दोनों पक्षों में ⟨a1,b2⟩ जोड़ेंb2 terms को मिलाएंदोनों पक्षों में ⟨a2,b1⟩ जोड़ेंb1 terms को मिलाएंright-hand side को मिलाएं⟨a1,b2⟩+⟨a2,b1⟩ घटाएं
यह प्रमाण स्पष्ट करता है कि कभी-कभी समीकरण के दोनों पक्षों में जोड़ने के लिए inner products खोजना रचनात्मक रूप से उपयोगी हो सकता है।
नियम 6: Scalars को inner product के अंदर और बाहर लाया जा सकता है
z⋅⟨a,b⟩=⟨z⋅a,b⟩=⟨a,z⋅b⟩
इस कथन का प्रमाण पाठक के लिए एक अभ्यास के रूप में छोड़ दिया गया है। एक संकेत (hint) के रूप में, constant terms को एक summation (योग) के अंदर और बाहर लाया जा सकता है।
यह ट्यूटोरियल ZK Bulletproofs पर हमारी श्रृंखला का हिस्सा है।