Documentation

Cvc.Typed.Theory.Nullable.Bag

Bags over nullables, typed #

Each lifted operator has its plain counterpart's signature with an Option around every argument and around the result, and nothing else changed. The lift is strict: none unless every argument is some.

The bag term becomes nullable, not its elements — Option (Bag α), not Bag (Option α). The element type is untouched, so the Ord binders are the plain operators'.

def Cvc.Typed.Term.bagInterMin? [Ω] {α : Type} [Ord α] (lft rgt : Term (Option (Bag α))) :
Env (Term (Option (Bag α)))

bagInterMin lifted over nullables, strictly: none unless every argument is some.

Equations
Instances For
    def Cvc.Typed.Term.bagInterMinN? [Ω] {α : Type} [Ord α] (terms : Terms (Option (Bag α))) (atLeastTwoElements : 2 ≤ Array.size terms := by (try grind) <;> fail "failed to prove term array has at least two elements") :
    Env (Term (Option (Bag α)))

    bagInterMin? over two or more terms.

    Equations
    Instances For
      def Cvc.Typed.Term.bagDifferenceRemove? [Ω] {α : Type} [Ord α] (lft rgt : Term (Option (Bag α))) :
      Env (Term (Option (Bag α)))

      bagDifferenceRemove lifted over nullables, strictly: none unless every argument is some.

      Equations
      Instances For
        def Cvc.Typed.Term.bagChoose? [Ω] {α : Type} [Ord α] (b : Term (Option (Bag α))) :
        Env (Term (Option α))

        bagChoose lifted over nullables, strictly: none unless every argument is some.

        Equations
        Instances For
          def Cvc.Typed.Term.bagUnionMaxN? [Ω] {α : Type} [Ord α] (terms : Terms (Option (Bag α))) (atLeastTwoElements : 2 ≤ Array.size terms := by (try grind) <;> fail "failed to prove term array has at least two elements") :
          Env (Term (Option (Bag α)))

          bagUnionMax? over two or more terms.

          Equations
          Instances For
            def Cvc.Typed.Term.bagPartition? [Ω] {α : Type} [Ord α] (p : Term (Option (α → α → Bool))) (b : Term (Option (Bag α))) :
            Env (Term (Option (Bag (Bag α))))

            bagPartition lifted over nullables, strictly: none unless every argument is some.

            Equations
            Instances For
              def Cvc.Typed.Term.bagUnionDisjointN? [Ω] {α : Type} [Ord α] (terms : Terms (Option (Bag α))) (atLeastTwoElements : 2 ≤ Array.size terms := by (try grind) <;> fail "failed to prove term array has at least two elements") :
              Env (Term (Option (Bag α)))

              bagUnionDisjoint? over two or more terms.

              Equations
              Instances For
                def Cvc.Typed.Term.bagDifferenceSubtract? [Ω] {α : Type} [Ord α] (lft rgt : Term (Option (Bag α))) :
                Env (Term (Option (Bag α)))

                bagDifferenceSubtract lifted over nullables, strictly: none unless every argument is some.

                Equations
                Instances For
                  def Cvc.Typed.Term.bagFilter? [Ω] {α : Type} [Ord α] (p : Term (Option (α → Bool))) (b : Term (Option (Bag α))) :
                  Env (Term (Option (Bag α)))

                  bagFilter lifted over nullables, strictly: none unless every argument is some.

                  Equations
                  Instances For
                    def Cvc.Typed.Term.bagMap? [Ω] {α β : Type} [Ord α] [Ord β] (f : Term (Option (α → β))) (b : Term (Option (Bag α))) :
                    Env (Term (Option (Bag β)))

                    bagMap lifted over nullables, strictly: none unless every argument is some.

                    Equations
                    Instances For
                      def Cvc.Typed.Term.bagUnionMax? [Ω] {α : Type} [Ord α] (lft rgt : Term (Option (Bag α))) :
                      Env (Term (Option (Bag α)))

                      bagUnionMax lifted over nullables, strictly: none unless every argument is some.

                      Equations
                      Instances For
                        def Cvc.Typed.Term.bagCard? [Ω] {α : Type} [Ord α] (b : Term (Option (Bag α))) :

                        bagCard lifted over nullables, strictly: none unless every argument is some.

                        Equations
                        Instances For
                          def Cvc.Typed.Term.bagSetof? [Ω] {α : Type} [Ord α] (b : Term (Option (Bag α))) :
                          Env (Term (Option (Bag α)))

                          bagSetof lifted over nullables, strictly: none unless every argument is some.

                          Equations
                          Instances For
                            def Cvc.Typed.Term.bagMake? [Ω] {α : Type} [Ord α] (elm : Term (Option α)) (count : Term (Option Int)) :
                            Env (Term (Option (Bag α)))

                            bagMake lifted over nullables, strictly: none unless every argument is some.

                            Equations
                            Instances For
                              def Cvc.Typed.Term.bagFold? [Ω] {α β : Type} [Ord α] (f : Term (Option (α → β → β))) (init : Term (Option β)) (b : Term (Option (Bag α))) :
                              Env (Term (Option β))

                              bagFold lifted over nullables, strictly: none unless every argument is some.

                              Equations
                              Instances For
                                def Cvc.Typed.Term.bagSubbag? [Ω] {α : Type} [Ord α] (lft rgt : Term (Option (Bag α))) :

                                bagSubbag lifted over nullables, strictly: none unless every argument is some.

                                Equations
                                Instances For
                                  def Cvc.Typed.Term.bagAll? [Ω] {α : Type} [Ord α] (p : Term (Option (α → Bool))) (b : Term (Option (Bag α))) :

                                  bagAll lifted over nullables, strictly: none unless every argument is some.

                                  Equations
                                  Instances For
                                    def Cvc.Typed.Term.bagSome? [Ω] {α : Type} [Ord α] (p : Term (Option (α → Bool))) (b : Term (Option (Bag α))) :

                                    bagSome lifted over nullables, strictly: none unless every argument is some.

                                    Equations
                                    Instances For
                                      def Cvc.Typed.Term.bagUnionDisjoint? [Ω] {α : Type} [Ord α] (lft rgt : Term (Option (Bag α))) :
                                      Env (Term (Option (Bag α)))

                                      bagUnionDisjoint lifted over nullables, strictly: none unless every argument is some.

                                      Equations
                                      Instances For
                                        def Cvc.Typed.Term.bagMember? [Ω] {α : Type} [Ord α] (elm : Term (Option α)) (b : Term (Option (Bag α))) :

                                        bagMember lifted over nullables, strictly: none unless every argument is some.

                                        Equations
                                        Instances For
                                          def Cvc.Typed.Term.bagCount? [Ω] {α : Type} [Ord α] (elm : Term (Option α)) (b : Term (Option (Bag α))) :

                                          bagCount lifted over nullables, strictly: none unless every argument is some.

                                          Equations
                                          Instances For