1 import Base 2 import ./storage_certificate.bend as Certificate 3 import ./storage_witness.bend as Witness 4 import ./traversal_witness.bend as TraversalWitness 5 6 type Copies<-Element: Data,-pair: Array & Array> is Data: 7 Copies{left: Certificate.Certificate,~Array,pair)>,right: Certificate.Certificate,~Array,pair)>} 8 9 def clone(~Element: Data,-input: Array,evidence: Certificate.Certificate,left: Certificate.Certificate,right: Certificate.Certificate) -> 10 Copies: 11 Certificate.Certificate{+depth,equation} = evidence 12 %Equal.sym(Array & Array,Array.clone(Element,input),(input,input), 13 Witness.clone(Element,depth,input,Certificate.witness_at(Element,depth,input,equation))) : Copies 14 Copies{left,right}