From 7ce6bf4f7740de4c69877ec9179520bcaa0d014c Mon Sep 17 00:00:00 2001 From: Chantal Keller Date: Fri, 18 Feb 2022 17:10:13 +0100 Subject: Removed deprecated features --- src/bva/Bva_checker.v | 302 +++++++++++++++++++++++++------------------------- 1 file changed, 151 insertions(+), 151 deletions(-) (limited to 'src/bva/Bva_checker.v') diff --git a/src/bva/Bva_checker.v b/src/bva/Bva_checker.v index 24917a8..5c14bab 100644 --- a/src/bva/Bva_checker.v +++ b/src/bva/Bva_checker.v @@ -96,7 +96,7 @@ Section Checker. | Auop (UO_BVbitOf N p) a' => (* TODO: Do not need to check [Nat.eqb l (N.to_nat N)] at every iteration *) - if (a == a') (* We bit blast the right bv *) + if (a =? a') (* We bit blast the right bv *) && (Nat.eqb i p) (* We consider bits after bits *) && (Nat.eqb n (N.to_nat N)) (* The bv has indeed type BV n *) then check_bb a bs (S i) n @@ -133,7 +133,7 @@ Section Checker. Fixpoint check_not (bs br : list _lit) := match bs, br with | nil, nil => true - | b::bs, r::br => (r == Lit.neg b) && check_not bs br + | b::bs, r::br => (r =? Lit.neg b) && check_not bs br | _, _ => false end. @@ -146,7 +146,7 @@ Section Checker. | FbbT a bs, FbbT r br => match get_atom r with | Auop (UO_BVnot N) a' => - if (a == a') && check_not bs br && + if (a =? a') && check_not bs br && (N.of_nat (length bs) =? N)%N then lres::nil else C._true @@ -174,25 +174,25 @@ Fixpoint check_symopp (bs1 bs2 bsres : list _lit) (bvop: binop) := match get_form (Lit.blit bres), bvop with | Fand args, BO_BVand n => - ((if PArray.length args == 2 then + ((if PArray.length args =? 2 then let a1 := args.[0] in let a2 := args.[1] in - ((a1 == b1) && (a2 == b2)) || ((a1 == b2) && (a2 == b1)) + ((a1 =? b1) && (a2 =? b2)) || ((a1 =? b2) && (a2 =? b1)) else false), BO_BVand (n-1)) | For args, BO_BVor n => - ((if PArray.length args == 2 then + ((if PArray.length args =? 2 then let a1 := args.[0] in let a2 := args.[1] in - ((a1 == b1) && (a2 == b2)) || ((a1 == b2) && (a2 == b1)) + ((a1 =? b1) && (a2 =? b2)) || ((a1 =? b2) && (a2 =? b1)) else false), BO_BVor (n-1)) | Fxor a1 a2, BO_BVxor n => - (((a1 == b1) && (a2 == b2)) || ((a1 == b2) && (a2 == b1)), + (((a1 =? b1) && (a2 =? b2)) || ((a1 =? b2) && (a2 =? b1)), BO_BVxor (n-1)) | Fiff a1 a2, (BO_eq (Typ.TBV n)) => - (((a1 == b1) && (a2 == b2)) || ((a1 == b2) && (a2 == b1)), + (((a1 =? b1) && (a2 =? b2)) || ((a1 =? b2) && (a2 =? b1)), BO_eq (Typ.TBV n)) | _, _ => (false, bvop) @@ -218,21 +218,21 @@ Fixpoint check_symopp (bs1 bs2 bsres : list _lit) (bvop: binop) := match get_atom a with | Abop (BO_BVand n) a1' a2' => - if (((a1 == a1') && (a2 == a2')) || ((a1 == a2') && (a2 == a1'))) + if (((a1 =? a1') && (a2 =? a2')) || ((a1 =? a2') && (a2 =? a1'))) && (@check_symopp bs1 bs2 bsres (BO_BVand n)) && (N.of_nat (length bs1) =? n)%N then lres::nil else C._true | Abop (BO_BVor n) a1' a2' => - if (((a1 == a1') && (a2 == a2')) || ((a1 == a2') && (a2 == a1'))) + if (((a1 =? a1') && (a2 =? a2')) || ((a1 =? a2') && (a2 =? a1'))) && (check_symopp bs1 bs2 bsres (BO_BVor n)) && (N.of_nat (length bs1) =? n)%N then lres::nil else C._true | Abop (BO_BVxor n) a1' a2' => - if (((a1 == a1') && (a2 == a2')) || ((a1 == a2') && (a2 == a1'))) + if (((a1 =? a1') && (a2 =? a2')) || ((a1 =? a2') && (a2 =? a1'))) && (check_symopp bs1 bs2 bsres (BO_BVxor n)) && (N.of_nat (length bs1) =? n)%N then lres::nil @@ -268,7 +268,7 @@ Fixpoint check_symopp (bs1 bs2 bsres : list _lit) (bvop: binop) := let ires := match get_form (Lit.blit bres) with | Fiff a1 a2 => - ((a1 == b1) && (a2 == b2)) || ((a1 == b2) && (a2 == b1)) + ((a1 =? b1) && (a2 =? b2)) || ((a1 =? b2) && (a2 =? b1)) | _ => false end in if ires then check_eq bs1 bs2 bsres @@ -284,7 +284,7 @@ Fixpoint check_symopp (bs1 bs2 bsres : list _lit) (bvop: binop) := let ires := match get_form (Lit.blit bres) with | Fiff a1 a2 => - ((a1 == b1) && (a2 == b2)) || ((a1 == b2) && (a2 == b1)) + ((a1 =? b1) && (a2 =? b2)) || ((a1 =? b2) && (a2 =? b1)) | _ => false end in if ires then check_eq bs1 bs2 bsres @@ -306,7 +306,7 @@ Fixpoint check_symopp (bs1 bs2 bsres : list _lit) (bvop: binop) := | Fatom a, _ (* | _, Fatom a *) => match get_atom a with | Abop (BO_eq (Typ.TBV n)) a1' a2' => - if (((a1 == a1') && (a2 == a2')) || ((a1 == a2') && (a2 == a1'))) + if (((a1 =? a1') && (a2 =? a2')) || ((a1 =? a2') && (a2 =? a1'))) && (check_eq bs1 bs2 [lbb]) && (N.of_nat (length bs1) =? n)%N then lres::nil @@ -340,12 +340,12 @@ Fixpoint check_symopp (bs1 bs2 bsres : list _lit) (bvop: binop) := Fixpoint eq_carry_lit (carry : carry) (c : _lit) := if Lit.is_pos c then match carry with - | Clit l => l == c + | Clit l => l =? c | Cand c1 c2 => match get_form (Lit.blit c) with | Fand args => - if PArray.length args == 2 then + if PArray.length args =? 2 then (eq_carry_lit c1 (args.[0]) && eq_carry_lit c2 (args.[1])) (* || (eq_carry_lit c1 (args.[1]) && eq_carry_lit c2 (args.[0])) *) else false @@ -363,7 +363,7 @@ Fixpoint check_symopp (bs1 bs2 bsres : list _lit) (bvop: binop) := | Cor c1 c2 => match get_form (Lit.blit c) with | For args => - if PArray.length args == 2 then + if PArray.length args =? 2 then (eq_carry_lit c1 (args.[0]) && eq_carry_lit c2 (args.[1])) (* || (eq_carry_lit c1 (args.[1]) && eq_carry_lit c2 (args.[0])) *) else false @@ -381,7 +381,7 @@ Fixpoint check_symopp (bs1 bs2 bsres : list _lit) (bvop: binop) := else (* c can be negative only when it is literal false *) match carry with - | Clit l => l == c + | Clit l => l =? c | _ => false end. @@ -400,7 +400,7 @@ Fixpoint check_symopp (bs1 bs2 bsres : list _lit) (bvop: binop) := (* This is the way LFSC computes carries *) let carry' := Cor (Cand (Clit b1) (Clit b2)) (Cand (Cxor (Clit b1) (Clit b2)) carry) in - (((a1 == b1) && (a2 == b2)) || ((a1 == b2) && (a2 == b1))) + (((a1 =? b1) && (a2 =? b2)) || ((a1 =? b2) && (a2 =? b1))) && eq_carry_lit carry c && check_add bs1 bs2 bsres carry' | _ => false @@ -422,7 +422,7 @@ Fixpoint check_symopp (bs1 bs2 bsres : list _lit) (bvop: binop) := match get_atom a with | Abop (BO_BVadd n) a1' a2' => - if (((a1 == a1') && (a2 == a2')) || ((a1 == a2') && (a2 == a1'))) + if (((a1 =? a1') && (a2 =? a2')) || ((a1 =? a2') && (a2 =? a1'))) && (check_add bs1 bs2 bsres (Clit Lit._false)) && (N.of_nat (length bs1) =? n)%N then lres::nil @@ -458,7 +458,7 @@ Fixpoint check_symopp (bs1 bs2 bsres : list _lit) (bvop: binop) := | FbbT a bs, FbbT r br => match get_atom r with | Auop (UO_BVneg n) a' => - if (a == a') && check_neg bs br && + if (a =? a') && check_neg bs br && (N.of_nat (length bs) =? n)%N then lres::nil else C._true @@ -545,7 +545,7 @@ Fixpoint check_symopp (bs1 bs2 bsres : list _lit) (bvop: binop) := match get_atom a with | Abop (BO_BVmult n) a1' a2' => - if (((a1 == a1') && (a2 == a2')) (* || ((a1 == a2') && (a2 == a1')) *) ) + if (((a1 =? a1') && (a2 =? a2')) (* || ((a1 =? a2') && (a2 =? a1')) *) ) && (check_mult bs1 bs2 bsres) && (N.of_nat (length bs1) =? n)%N then lres::nil @@ -590,7 +590,7 @@ Fixpoint check_symopp (bs1 bs2 bsres : list _lit) (bvop: binop) := | Fatom a, _ (* | _, Fatom a *) => match get_atom a with | Abop (BO_BVult n) a1' a2' => - if ((a1 == a1') && (a2 == a2')) + if ((a1 =? a1') && (a2 =? a2')) && (check_ult bs1 bs2 lbb) && (N.of_nat (length bs1) =? n)%N && (N.of_nat (length bs2) =? n)%N @@ -636,7 +636,7 @@ Fixpoint check_symopp (bs1 bs2 bsres : list _lit) (bvop: binop) := | Fatom a, _ (* | _, Fatom a *) => match get_atom a with | Abop (BO_BVslt n) a1' a2' => - if ((a1 == a1') && (a2 == a2')) + if ((a1 =? a1') && (a2 =? a2')) && (check_slt bs1 bs2 lbb) && (N.of_nat (length bs1) =? n)%N && (N.of_nat (length bs2) =? n)%N @@ -691,7 +691,7 @@ Fixpoint check_symopp (bs1 bs2 bsres : list _lit) (bvop: binop) := match get_atom a with | Abop (BO_BVconcat n m) a1' a2' => - if (((a1 == a1') && (a2 == a2')) (* || ((a1 == a2') && (a2 == a1')) *) ) + if (((a1 =? a1') && (a2 =? a2')) (* || ((a1 =? a2') && (a2 =? a1')) *) ) && (check_concat bs1 bs2 bsres) && (N.of_nat (length bs1) =? n)%N && (N.of_nat (length bs2) =? m)%N @@ -771,7 +771,7 @@ Fixpoint check_symopp (bs1 bs2 bsres : list _lit) (bvop: binop) := else false. Definition check_extract3 (bs bsres: list _lit) (i j: N) : bool := - forallb2 (fun l1 l2 => l1 == l2) (extract_lit bs (nat_of_N i) (nat_of_N j)) bsres. + forallb2 (fun l1 l2 => l1 =? l2) (extract_lit bs (nat_of_N i) (nat_of_N j)) bsres. (** Checker for bitvector extraction *) @@ -783,7 +783,7 @@ Fixpoint check_symopp (bs1 bs2 bsres : list _lit) (bvop: binop) := | O => match j, bsres with | O, nil => true - | S j', b :: bsres' => (bx == b) && check_extract2 x' bsres' i j' + | S j', b :: bsres' => (bx =? b) && check_extract2 x' bsres' i j' | _, _ => false end | S i' => @@ -804,7 +804,7 @@ Fixpoint check_symopp (bs1 bs2 bsres : list _lit) (bvop: binop) := match get_atom a with | Auop (UO_BVextr i n0 n1) a1' => - if ((a1 == a1') (* || ((a1 == a2') && (a2 == a1')) *) ) + if ((a1 =? a1') (* || ((a1 =? a2') && (a2 =? a1')) *) ) && (check_extract bs bsres i (n0 + i)) && (N.of_nat (length bs) =? n1)%N && (N.leb (n0 + i) n1) @@ -847,7 +847,7 @@ Fixpoint check_symopp (bs1 bs2 bsres : list _lit) (bvop: binop) := match get_atom a with | Auop (UO_BVzextn n i) a1' => - if ((a1 == a1') (* || ((a1 == a2') && (a2 == a1')) *) ) + if ((a1 =? a1') (* || ((a1 =? a2') && (a2 =? a1')) *) ) && (check_zextend bs bsres i) && (N.of_nat (length bs) =? n)%N then lres::nil @@ -889,7 +889,7 @@ Fixpoint check_symopp (bs1 bs2 bsres : list _lit) (bvop: binop) := match get_atom a with | Auop (UO_BVsextn n i) a1' => - if ((a1 == a1') (* || ((a1 == a2') && (a2 == a1')) *) ) + if ((a1 =? a1') (* || ((a1 =? a2') && (a2 =? a1')) *) ) && (check_sextend bs bsres i) && (N.of_nat (length bs) =? n)%N then lres::nil @@ -938,7 +938,7 @@ Definition shl_lit_be (a: list _lit) (b: list bool): list _lit := | Abop (BO_BVshl n) a1' a2' => match (get_atom a2) with | (Acop (CO_BV bv2 n2)) => - if (((a1 == a1') && (a2 == a2')) (* || ((a1 == a2') && (a2 == a1')) *) ) + if (((a1 =? a1') && (a2 =? a2')) (* || ((a1 =? a2') && (a2 =? a1')) *) ) && check_shl bs1 bv2 bsres && (N.of_nat (length bs1) =? n)%N && (N.of_nat (length bv2) =? n)%N @@ -989,7 +989,7 @@ Definition shr_lit_be (a: list _lit) (b: list bool): list _lit := | Abop (BO_BVshr n) a1' a2' => match (get_atom a2) with | (Acop (CO_BV bv2 n2)) => - if (((a1 == a1') && (a2 == a2')) (* || ((a1 == a2') && (a2 == a1')) *) ) + if (((a1 =? a1') && (a2 =? a2')) (* || ((a1 =? a2') && (a2 =? a1')) *) ) && check_shr bs1 bv2 bsres && (N.of_nat (length bs1) =? n)%N && (N.of_nat (length bv2) =? n)%N @@ -1211,7 +1211,7 @@ Proof. (* a *) pose proof (H a). - assert (H1: a < PArray.length t_atom). + assert (H1: a a = b. Proof. intros A a b l; split; [intros H; inversion H|intros ->]; auto. Qed. -Lemma eqb_spec : forall x y, (x == y) = true <-> x = y. +Lemma eqb_spec : forall x y, (x =? y) = true <-> x = y. Proof. split;auto using eqb_correct, eqb_complete. Qed. @@ -1937,9 +1937,9 @@ Proof. intros. simpl in H. case (Lit.is_pos ibsres) in H. case (t_form .[ Lit.blit ibsres]) in H; try (contradict H; easy). - case (PArray.length a == 2) in H. - case ((a .[ 0] == ibs1) && (a .[ 1] == ibs2) - || (a .[ 0] == ibs2) && (a .[ 1] == ibs1)) in H. + case (PArray.length a =? 2) in H. + case ((a .[ 0] =? ibs1) && (a .[ 1] =? ibs2) + || (a .[ 0] =? ibs2) && (a .[ 1] =? ibs1)) in H. exact H. now contradict H. now contradict H. @@ -1947,9 +1947,9 @@ Proof. intros. unfold check_symopp in H. case (Lit.is_pos ibsres) in H. case (t_form .[ Lit.blit ibsres]) in H; try (contradict H; easy). - case (PArray.length a == 2) in H. - case ((a .[ 0] == ibs1) && (a .[ 1] == ibs2) - || (a .[ 0] == ibs2) && (a .[ 1] == ibs1)) in H. + case (PArray.length a =? 2) in H. + case ((a .[ 0] =? ibs1) && (a .[ 1] =? ibs2) + || (a .[ 0] =? ibs2) && (a .[ 1] =? ibs1)) in H. apply H. now contradict H. now contradict H. @@ -1964,9 +1964,9 @@ Proof. intros. simpl in H. case (Lit.is_pos ibsres) in H. case (t_form .[ Lit.blit ibsres]) in H; try (contradict H; easy). - case (PArray.length a == 2) in H. - case ((a .[ 0] == ibs1) && (a .[ 1] == ibs2) - || (a .[ 0] == ibs2) && (a .[ 1] == ibs1)) in H. + case (PArray.length a =? 2) in H. + case ((a .[ 0] =? ibs1) && (a .[ 1] =? ibs2) + || (a .[ 0] =? ibs2) && (a .[ 1] =? ibs1)) in H. exact H. now contradict H. now contradict H. @@ -1974,9 +1974,9 @@ Proof. intros. unfold check_symopp in H. case (Lit.is_pos ibsres) in H. case (t_form .[ Lit.blit ibsres]) in H; try (contradict H; easy). - case (PArray.length a == 2) in H. - case ((a .[ 0] == ibs1) && (a .[ 1] == ibs2) - || (a .[ 0] == ibs2) && (a .[ 1] == ibs1)) in H. + case (PArray.length a =? 2) in H. + case ((a .[ 0] =? ibs1) && (a .[ 1] =? ibs2) + || (a .[ 0] =? ibs2) && (a .[ 1] =? ibs1)) in H. apply H. now contradict H. now contradict H. @@ -1991,14 +1991,14 @@ Proof. intros. simpl in H. case (Lit.is_pos ibsres) in H. case (t_form .[ Lit.blit ibsres]) in H; try (contradict H; easy). - case ((i == ibs1) && (i0 == ibs2) || (i == ibs2) && (i0 == ibs1)) in H. + case ((i =? ibs1) && (i0 =? ibs2) || (i =? ibs2) && (i0 =? ibs1)) in H. exact H. now contradict H. now contradict H. unfold check_symopp in H. case (Lit.is_pos ibsres) in H. case (t_form .[ Lit.blit ibsres]) in H; try (contradict H; easy). - case ((i == ibs1) && (i0 == ibs2) || (i == ibs2) && (i0 == ibs1)) in H. + case ((i =? ibs1) && (i0 =? ibs2) || (i =? ibs2) && (i0 =? ibs1)) in H. apply H. now contradict H. now contradict H. @@ -2041,20 +2041,20 @@ Proof. intro bs1. intros. rewrite H2 in H1. simpl. rewrite afold_left_and. - case_eq (PArray.length a == 2). intros. rewrite H3 in H1. + case_eq (PArray.length a =? 2). intros. rewrite H3 in H1. rewrite eqb_spec in H3. apply to_list_two in H3. (* apply length_to_list in H4. *) unfold forallb. rewrite H3. - case_eq ((a .[ 0] == ibs1) && (a .[ 1] == ibs2)). intros H5. + case_eq ((a .[ 0] =? ibs1) && (a .[ 1] =? ibs2)). intros H5. rewrite andb_true_iff in H5. destruct H5 as (H5 & H6). rewrite eqb_spec in H5, H6. rewrite H5, H6. unfold Lit.interp. rewrite Heq1, Heq2. unfold Var.interp. now rewrite andb_true_r. intros. rewrite H4 in H1. simpl in *. - case_eq ((a .[ 0] == ibs2) && (a .[ 1] == ibs1)). + case_eq ((a .[ 0] =? ibs2) && (a .[ 1] =? ibs1)). intros H5. rewrite andb_true_iff in H5. destruct H5 as (H5 & H6). rewrite eqb_spec in H5, H6. @@ -2100,19 +2100,19 @@ Proof. intro bs1. intros. rewrite H2 in H1. simpl. rewrite afold_left_and. - case_eq (PArray.length a == 2). intros. rewrite H3 in H1. + case_eq (PArray.length a =? 2). intros. rewrite H3 in H1. rewrite eqb_spec in H3. apply to_list_two in H3. unfold forallb. rewrite H3. - case_eq ((a .[ 0] == ibs1) && (a .[ 1] == ibs2)). intros H5. + case_eq ((a .[ 0] =? ibs1) && (a .[ 1] =? ibs2)). intros H5. rewrite andb_true_iff in H5. destruct H5 as (H5 & H6). rewrite eqb_spec in H5, H6. rewrite H5, H6. unfold Lit.interp. rewrite Heq1, Heq2. unfold Var.interp. now rewrite andb_true_r. intros H4. rewrite H4 in H1. simpl in *. - case_eq ((a .[ 0] == ibs2) && (a .[ 1] == ibs1)). intros H5. + case_eq ((a .[ 0] =? ibs2) && (a .[ 1] =? ibs1)). intros H5. rewrite andb_true_iff in H5. destruct H5 as (H6 & H7). rewrite eqb_spec in H6, H7. rewrite H6, H7. rewrite andb_true_r. @@ -2164,19 +2164,19 @@ Proof. intro bs1. intros. rewrite H2 in H1. simpl. rewrite afold_left_and. - case_eq (PArray.length a == 2). intros. rewrite H3 in H1. + case_eq (PArray.length a =? 2). intros. rewrite H3 in H1. rewrite eqb_spec in H3. apply to_list_two in H3. unfold forallb. rewrite H3. - case_eq ((a .[ 0] == ibs1) && (a .[ 1] == ibs2)). intros H5. + case_eq ((a .[ 0] =? ibs1) && (a .[ 1] =? ibs2)). intros H5. rewrite andb_true_iff in H5. destruct H5 as (H5 & H6). rewrite eqb_spec in H5, H6. rewrite H5, H6. unfold Lit.interp. rewrite Heq1, Heq2. unfold Var.interp. now rewrite andb_true_r. intros. rewrite H4 in H1. simpl in *. - case_eq ((a .[ 0] == ibs2) && (a .[ 1] == ibs1)). intros H5. + case_eq ((a .[ 0] =? ibs2) && (a .[ 1] =? ibs1)). intros H5. rewrite andb_true_iff in H5. destruct H5 as (H6 & H7). rewrite eqb_spec in H6, H7. rewrite H6, H7. rewrite andb_true_r. @@ -2226,20 +2226,20 @@ Proof. intro bs1. intros. rewrite H3 in H1. simpl. rewrite afold_left_and. - case_eq (PArray.length a == 2). intros H5. + case_eq (PArray.length a =? 2). intros H5. rewrite H5 in H1. rewrite eqb_spec in H5. apply to_list_two in H5. unfold forallb. rewrite H5. - case_eq ((a .[ 0] == ibs1) && (a .[ 1] == ibs2)). intros H6. + case_eq ((a .[ 0] =? ibs1) && (a .[ 1] =? ibs2)). intros H6. rewrite andb_true_iff in H6. destruct H6 as (H6 & H7). rewrite eqb_spec in H6, H7. rewrite H6, H7. unfold Lit.interp. rewrite Heq1, H2. unfold Var.interp. now rewrite andb_true_r. intros H6. rewrite H6 in H1. simpl in *. - case_eq ((a .[ 0] == ibs2) && (a .[ 1] == ibs1)). intros H7. + case_eq ((a .[ 0] =? ibs2) && (a .[ 1] =? ibs1)). intros H7. rewrite andb_true_iff in H7. destruct H7 as (H7 & H8). rewrite eqb_spec in H7, H8. rewrite H7, H8. rewrite andb_true_r. @@ -2310,12 +2310,12 @@ Proof. intro bs1. intros. rewrite H2 in H1. simpl. rewrite afold_left_or. - case_eq (PArray.length a == 2). intros. rewrite H3 in H1. + case_eq (PArray.length a =? 2). intros. rewrite H3 in H1. rewrite eqb_spec in H3. apply to_list_two in H3. unfold forallb. rewrite H3. - case_eq ((a .[ 0] == ibs1) && (a .[ 1] == ibs2)). intros H5. + case_eq ((a .[ 0] =? ibs1) && (a .[ 1] =? ibs2)). intros H5. rewrite andb_true_iff in H5. destruct H5 as (H5 & H6). rewrite eqb_spec in H5, H6. rewrite H5, H6. unfold C.interp. unfold existsb. rewrite orb_false_r. @@ -2325,7 +2325,7 @@ Proof. intro bs1. now unfold Var.interp. intros. rewrite H4 in H1. simpl in *. - case_eq ((a .[ 0] == ibs2) && (a .[ 1] == ibs1)). + case_eq ((a .[ 0] =? ibs2) && (a .[ 1] =? ibs1)). intros H5. rewrite andb_true_iff in H5. destruct H5 as (H5 & H6). rewrite eqb_spec in H5, H6. @@ -2369,21 +2369,21 @@ Proof. intro bs1. intros. rewrite H2 in H1. simpl. rewrite afold_left_or. - case_eq (PArray.length a == 2). intros. rewrite H3 in H1. + case_eq (PArray.length a =? 2). intros. rewrite H3 in H1. rewrite eqb_spec in H3. apply to_list_two in H3. unfold C.interp. unfold existsb. rewrite H3. - case_eq ((a .[ 0] == ibs1) && (a .[ 1] == ibs2)). intros H5. + case_eq ((a .[ 0] =? ibs1) && (a .[ 1] =? ibs2)). intros H5. rewrite andb_true_iff in H5. destruct H5 as (H5 & H6). rewrite eqb_spec in H5, H6. rewrite H5, H6. unfold Lit.interp. rewrite Heq1, Heq2. unfold Var.interp. now rewrite orb_false_r. intros H4. rewrite H4 in H1. simpl in *. - case_eq ((a .[ 0] == ibs2) && (a .[ 1] == ibs1)). intros H5. + case_eq ((a .[ 0] =? ibs2) && (a .[ 1] =? ibs1)). intros H5. rewrite andb_true_iff in H5. destruct H5 as (H6 & H7). rewrite eqb_spec in H6, H7. rewrite H6, H7. rewrite orb_false_r. @@ -2433,12 +2433,12 @@ Proof. intro bs1. intros. rewrite H2 in H1. simpl. rewrite afold_left_or. - case_eq (PArray.length a == 2). intros. rewrite H3 in H1. + case_eq (PArray.length a =? 2). intros. rewrite H3 in H1. rewrite eqb_spec in H3. apply to_list_two in H3. unfold forallb. rewrite H3. - case_eq ((a .[ 0] == ibs1) && (a .[ 1] == ibs2)). intros H5. + case_eq ((a .[ 0] =? ibs1) && (a .[ 1] =? ibs2)). intros H5. rewrite andb_true_iff in H5. destruct H5 as (H5 & H6). rewrite eqb_spec in H5, H6. rewrite H5, H6. unfold C.interp, existsb. @@ -2446,7 +2446,7 @@ Proof. intro bs1. rewrite Heq1, Heq2. unfold Var.interp. now rewrite orb_false_r. intros. rewrite H4 in H1. simpl in *. - case_eq ((a .[ 0] == ibs2) && (a .[ 1] == ibs1)). intros H5. + case_eq ((a .[ 0] =? ibs2) && (a .[ 1] =? ibs1)). intros H5. rewrite andb_true_iff in H5. destruct H5 as (H6 & H7). rewrite eqb_spec in H6, H7. rewrite H6, H7. rewrite orb_false_r. @@ -2494,20 +2494,20 @@ Proof. intro bs1. intros. rewrite H3 in H1. simpl. rewrite afold_left_or. - case_eq (PArray.length a == 2). intros H5. + case_eq (PArray.length a =? 2). intros H5. rewrite H5 in H1. rewrite eqb_spec in H5. apply to_list_two in H5. unfold forallb. rewrite H5. - case_eq ((a .[ 0] == ibs1) && (a .[ 1] == ibs2)). intros H6. + case_eq ((a .[ 0] =? ibs1) && (a .[ 1] =? ibs2)). intros H6. rewrite andb_true_iff in H6. destruct H6 as (H6 & H7). rewrite eqb_spec in H6, H7. rewrite H6, H7. unfold C.interp, Lit.interp, existsb. rewrite Heq1, H2. unfold Var.interp. now rewrite orb_false_r. intros H6. rewrite H6 in H1. simpl in *. - case_eq ((a .[ 0] == ibs2) && (a .[ 1] == ibs1)). intros H7. + case_eq ((a .[ 0] =? ibs2) && (a .[ 1] =? ibs1)). intros H7. rewrite andb_true_iff in H7. destruct H7 as (H7 & H8). rewrite eqb_spec in H7, H8. rewrite H7, H8. rewrite orb_false_r. @@ -2576,7 +2576,7 @@ Proof. intro bs1. try (intros a Heq; rewrite Heq in H1; now contradict H1). try (intros i Heq; rewrite Heq in H1; now contradict H1). intros. rewrite H2 in H1. simpl. - case_eq ((i == ibs1) && (i0 == ibs2)). intros H5. + case_eq ((i =? ibs1) && (i0 =? ibs2)). intros H5. rewrite andb_true_iff in H5. destruct H5 as (H5 & H6). rewrite eqb_spec in H5, H6. rewrite H5, H6. @@ -2585,7 +2585,7 @@ Proof. intro bs1. now unfold Var.interp. intros H4. rewrite H4 in H1. simpl in *. - case_eq ((i == ibs2) && (i0 == ibs1)). + case_eq ((i =? ibs2) && (i0 =? ibs1)). intros H5. rewrite andb_true_iff in H5. destruct H5 as (H5 & H6). rewrite eqb_spec in H5, H6. @@ -2629,14 +2629,14 @@ Proof. intro bs1. try (intros a Heq; rewrite Heq in H1; now contradict H1). intros. rewrite H2 in H1. simpl. - case_eq ((i == ibs1) && (i0 == ibs2)). intros H5. + case_eq ((i =? ibs1) && (i0 =? ibs2)). intros H5. rewrite andb_true_iff in H5. destruct H5 as (H5 & H6). rewrite eqb_spec in H5, H6. rewrite H5, H6. unfold Lit.interp. rewrite Heq1, Heq2. now unfold Var.interp. intros H4. rewrite Heq0, H4 in H1. simpl in *. - case_eq ((i == ibs2) && (i0 == ibs1)). intros H5. + case_eq ((i =? ibs2) && (i0 =? ibs1)). intros H5. rewrite andb_true_iff in H5. destruct H5 as (H6 & H7). rewrite eqb_spec in H6, H7. rewrite H6, H7. @@ -2686,14 +2686,14 @@ Proof. intro bs1. intros. rewrite H2 in H1. simpl. - case_eq ((i == ibs1) && (i0 == ibs2)). intros H5. + case_eq ((i =? ibs1) && (i0 =? ibs2)). intros H5. rewrite andb_true_iff in H5. destruct H5 as (H5 & H6). rewrite eqb_spec in H5, H6. rewrite H5, H6. unfold Lit.interp. rewrite Heq1, Heq2. now unfold Var.interp. intros H4. rewrite Heq0, H4 in H1. simpl in *. - case_eq ((i == ibs2) && (i0 == ibs1)). intros H5. + case_eq ((i =? ibs2) && (i0 =? ibs1)). intros H5. rewrite andb_true_iff in H5. destruct H5 as (H6 & H7). rewrite eqb_spec in H6, H7. rewrite H6, H7. @@ -2740,14 +2740,14 @@ Proof. intro bs1. try (intros a Heq; rewrite Heq in H1; now contradict H1). intros. rewrite H2 in H1. simpl. - case_eq ((i == ibs1) && (i0 == ibs2)). intros H5. + case_eq ((i =? ibs1) && (i0 =? ibs2)). intros H5. rewrite andb_true_iff in H5. destruct H5 as (H5 & H6). rewrite eqb_spec in H5, H6. rewrite H5, H6. unfold Lit.interp. rewrite Heq1, Heq2. now unfold Var.interp. intros H4. rewrite Heq0, H4 in H1. simpl in *. - case_eq ((i == ibs2) && (i0 == ibs1)). intros H5. + case_eq ((i =? ibs2) && (i0 =? ibs1)). intros H5. rewrite andb_true_iff in H5. destruct H5 as (H6 & H7). rewrite eqb_spec in H6, H7. rewrite H6, H7. @@ -2796,8 +2796,8 @@ Proof. simpl in H. case (Lit.is_pos r) in H. case (t_form .[ Lit.blit r]) in H; try easy. - case (PArray.length a == 2) in H; try easy. - case ((a .[ 0] == i) && (a .[ 1] == i0) || (a .[ 0] == i0) && (a .[ 1] == i)) in H; try easy. + case (PArray.length a =? 2) in H; try easy. + case ((a .[ 0] =? i) && (a .[ 1] =? i0) || (a .[ 0] =? i0) && (a .[ 1] =? i)) in H; try easy. specialize (IHrbsres bs1 bs2 (N - 1)%N H). simpl. simpl in n. @@ -2834,8 +2834,8 @@ Proof. simpl in H. case (Lit.is_pos r) in H. case (t_form .[ Lit.blit r]) in H; try easy. - case (PArray.length a == 2) in H; try easy. - case ((a .[ 0] == i) && (a .[ 1] == i0) || (a .[ 0] == i0) && (a .[ 1] == i)) in H; try easy. + case (PArray.length a =? 2) in H; try easy. + case ((a .[ 0] =? i) && (a .[ 1] =? i0) || (a .[ 0] =? i0) && (a .[ 1] =? i)) in H; try easy. specialize (IHrbsres bs1 bs2 (N - 1)%N H). simpl. simpl in n. @@ -2871,8 +2871,8 @@ Proof. intros bs1 bs2 bsres. now contradict H. case (Lit.is_pos xbsres) in *. case (t_form .[ Lit.blit xbsres] ) in *; try now contradict H. - case (PArray.length a == 2) in *. - case ((a .[ 0] == i) && (a .[ 1] == i0) || (a .[ 0] == i0) && (a .[ 1] == i)) in *. + case (PArray.length a =? 2) in *. + case ((a .[ 0] =? i) && (a .[ 1] =? i0) || (a .[ 0] =? i0) && (a .[ 1] =? i)) in *. specialize (IHbsres bs1 bs2 (n-1)%nat). simpl in H0. assert (length bs1 = (n-1)%nat). @@ -2924,8 +2924,8 @@ Proof. simpl in H. case (Lit.is_pos r) in H. case (t_form .[ Lit.blit r]) in H; try easy. - case (PArray.length a == 2) in H; try easy. - case ((a .[ 0] == i) && (a .[ 1] == i0) || (a .[ 0] == i0) && (a .[ 1] == i)) in H; try easy. + case (PArray.length a =? 2) in H; try easy. + case ((a .[ 0] =? i) && (a .[ 1] =? i0) || (a .[ 0] =? i0) && (a .[ 1] =? i)) in H; try easy. specialize (IHrbsres bs1 bs2 (N - 1)%N H). simpl. simpl in n. @@ -2961,8 +2961,8 @@ Proof. simpl in H. case (Lit.is_pos r) in H. case (t_form .[ Lit.blit r]) in H; try easy. - case (PArray.length a == 2) in H; try easy. - case ((a .[ 0] == i) && (a .[ 1] == i0) || (a .[ 0] == i0) && (a .[ 1] == i)) in H; try easy. + case (PArray.length a =? 2) in H; try easy. + case ((a .[ 0] =? i) && (a .[ 1] =? i0) || (a .[ 0] =? i0) && (a .[ 1] =? i)) in H; try easy. specialize (IHrbsres bs1 bs2 (N - 1)%N H). simpl. simpl in n. @@ -2998,8 +2998,8 @@ Proof. intros bs1 bs2 bsres. now contradict H. case (Lit.is_pos xbsres) in *. case (t_form .[ Lit.blit xbsres] ) in *; try now contradict H. - case (PArray.length a == 2) in *. - case ((a .[ 0] == i) && (a .[ 1] == i0) || (a .[ 0] == i0) && (a .[ 1] == i)) in *. + case (PArray.length a =? 2) in *. + case ((a .[ 0] =? i) && (a .[ 1] =? i0) || (a .[ 0] =? i0) && (a .[ 1] =? i)) in *. specialize (IHbsres bs1 bs2 (n-1)%nat). simpl in H0. assert (length bs1 = (n-1)%nat). @@ -3051,7 +3051,7 @@ Proof. simpl in H. case (Lit.is_pos r) in H. case (t_form .[ Lit.blit r]) in H; try easy. - case ((i1 == i) && (i2 == i0) || (i1 == i0) && (i2 == i)) in H; try easy. + case ((i1 =? i) && (i2 =? i0) || (i1 =? i0) && (i2 =? i)) in H; try easy. specialize (IHrbsres bs1 bs2 (N - 1)%N H). simpl. simpl in n. @@ -3088,7 +3088,7 @@ Proof. simpl in H. case (Lit.is_pos r) in H. case (t_form .[ Lit.blit r]) in H; try easy. - case ((i1 == i) && (i2 == i0) || (i1 == i0) && (i2 == i)) in H; try easy. + case ((i1 =? i) && (i2 =? i0) || (i1 =? i0) && (i2 =? i)) in H; try easy. specialize (IHrbsres bs1 bs2 (N - 1)%N H). simpl. simpl in n. @@ -3124,7 +3124,7 @@ Proof. intros bs1 bs2 bsres. now contradict H. case (Lit.is_pos xbsres) in *. case (t_form .[ Lit.blit xbsres] ) in *; try now contradict H. - case ((i1 == i) && (i2 == i0) || (i1 == i0) && (i2 == i)) in *. + case ((i1 =? i) && (i2 =? i0) || (i1 =? i0) && (i2 =? i)) in *. specialize (IHbsres bs1 bs2 (n-1)%nat). simpl in H0. assert (length bs1 = (n-1)%nat). @@ -3204,7 +3204,7 @@ Proof. intros [ | | | | | | | [ A B | A | | | | ]|N|N|N|N|N|N|N|N| | | | ] a1' a2' Heq9; try (intros; now apply C.interp_true). (* BVand *) - - case_eq ((a1 == a1') && (a2 == a2') || (a1 == a2') && (a2 == a1')); + - case_eq ((a1 =? a1') && (a2 =? a2') || (a1 =? a2') && (a2 =? a1')); simpl; intros Heq10; try (now apply C.interp_true). case_eq ( @@ -3227,7 +3227,7 @@ Proof. rewrite aforallbi_spec;intros. pose proof (H a). - assert (a < PArray.length t_atom). + assert (a