fn mk_vector_quant_opt<F>(
        &self,
        kind: QuantKind,
        vector: Exp,
        elem_ty: &Type,
        f: &mut F,
    ) -> Option<Exp>
    where
        F: FnMut(Exp) -> Option<Exp>,
    {
        let elem = self.mk_local("$elem", elem_ty.clone());
        if let Some(body) = f(elem) {
            let range_decl = self.mk_decl(self.mk_symbol("$elem"), elem_ty.clone(), None);
            let node_id = self.new_node(BOOL_TYPE.clone(), None);
            Some(
                ExpData::Quant(
                    node_id,
                    kind,
                    vec![(range_decl, vector)],
                    vec![],
                    None,
                    body,
                )
                .into_exp(),
            )
        } else {
            None
        }
    }
/// Creates a quantifier over the content of a vector. The passed function `f` receives
/// an expression representing an element of the vector and returns the quantifiers predicate;
/// if it returns None, this function will also return None, otherwise the quantifier will be
/// returned.
Creates a quantifier over the content of a vector. The passed function `f` receives
an expression representing an element of the vector and returns the quantifiers predicate;
if it returns None, this function will also return None, otherwise the quantifier will be
returned.
Creates a quantifier over the content of a vector . The passed function ` f ` receives an expression representing an element of the vector and returns the quantifiers predicate ; if it returns None this function will also return None otherwise the quantifier will be returned .
fn mk_vector_quant_opt<F>(
        &self,
        kind: QuantKind,
        vector: Exp,
        elem_ty: &Type,
        f: &mut F,
    ) -> Option<Exp>
    where
        F: FnMut(Exp) -> Option<Exp>,
    {
        let elem = self.mk_local("$elem", elem_ty.clone());
        if let Some(body) = f(elem) {
            let range_decl = self.mk_decl(self.mk_symbol("$elem"), elem_ty.clone(), None);
            let node_id = self.new_node(BOOL_TYPE.clone(), None);
            Some(
                ExpData::Quant(
                    node_id,
                    kind,
                    vec![(range_decl, vector)],
                    vec![],
                    None,
                    body,
                )
                .into_exp(),
            )
        } else {
            None
        }
    }
fn mk_vector_quant_opt < F > ( & self , kind : QuantKind , vector : Exp , elem_ty : & Type , f : & mut F , ) -> Option < Exp > where F : FnMut ( Exp ) -> Option < Exp > , { let elem = self . mk_local ( " " , elem_ty . clone ( ) ) ; if let Some ( body ) = f ( elem ) { let range_decl = self . mk_decl ( self . mk_symbol ( " " ) , elem_ty . clone ( ) , None ) ; let node_id = self . new_node ( BOOL_TYPE . clone ( ) , None ) ; Some ( ExpData :: Quant ( node_id , kind , vec ! [ ( range_decl vector ) ] , vec ! [ ] , None , body , ) . into_exp ( ) , ) } else { None } }
Creates a quantifier over the content of a vector.
Creates a quantifier over the content of a vector .
&self
kind
QuantKind
vector
Exp
elem_ty
&Type
f
&mut F