Documentation

Cvc.Typed.Theory.Nullable.Bool

Boolean and sort-generic 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.

equal? is not Option's equality. The lift is strict, so equal? of two nones is none, not some true. The same goes for distinct? and for ite?, which is strict in its condition.

xor? over any number of terms: none gives some false, one gives that term.

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

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

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

      xor? over two or more terms.

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

        equal? over two or more terms.

        Equations
        Instances For
          def Cvc.Typed.Term.equalN'? [Ω] {α : Type} (terms : Terms (Option α)) :

          equal? over any number of terms: none gives some true, one gives some true.

          Equations
          Instances For

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

            Equations
            Instances For

              or? over any number of terms: none gives some false, one gives that term.

              Equations
              Instances For

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

                Equations
                Instances For

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

                  Equations
                  Instances For
                    def Cvc.Typed.Term.ite? [Ω] {α : Type} (cnd : Term (Option Bool)) (thn els : Term (Option α)) :
                    Env (Term (Option α))

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

                    Equations
                    Instances For

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

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

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

                        Equations
                        Instances For

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

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

                            implies? over two or more terms.

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

                              distinct? over two or more terms.

                              Equations
                              Instances For

                                and? over any number of terms: none gives some true, one gives that term.

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

                                  and? over two or more terms.

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

                                    or? over two or more terms.

                                    Equations
                                    Instances For