module FStar.BitVector

fsdoc: no-summary-found

fsdoc: no-comment-found

let (is_subset_vec (#n:pos) (a:bv_t n) (b:bv_t n)):forall i:nat.{:pattern } ==>(<(i, n), ==>(=(index b i, false), =(index a i, false)))

is_subset_vec is the property that the zero bits of b are also zero in a. I.e. that a is a subset of b.

let (is_superset_vec (#n:pos) (a:bv_t n) (b:bv_t n)):forall i:nat.{:pattern } ==>(<(i, n), ==>(=(index b i, true), =(index a i, true)))

is_superset_vec is the property that the non-zero bits of b are also non-zero in a. I.e. that a is a superset of b.

val lemma_slice_subset_vec:Unidentified product: [#n:pos] Unidentified product: [a:bv_t n] Unidentified product: [b:bv_t n] Unidentified product: [i:nat] Unidentified product: [j:j:nat:{&&(<(i, j), <=(j, n))}] (Lemma ((requires is_subset_vec a b)) ((ensures (match n with 1  -> True | _  -> is_subset_vec #(-(j, i)) (slice a i j) (slice b i j)))))

lemma_slice_subset_vec proves that the subset property is conserved in subslices.

val lemma_slice_superset_vec:Unidentified product: [#n:pos] Unidentified product: [a:bv_t n] Unidentified product: [b:bv_t n] Unidentified product: [i:nat] Unidentified product: [j:j:nat:{&&(<(i, j), <=(j, n))}] (Lemma ((requires is_superset_vec a b)) ((ensures (match n with 1  -> True | _  -> is_superset_vec #(-(j, i)) (slice a i j) (slice b i j)))))

lemma_slice_superset_vec proves that the superset property is conserved in subslices.