Saltar al contenido

Desarrollo de una restricción de recuento: AT_LEAST(2; A, B, C) = (A AND B) OR (A AND C) OR (B AND C)

El desarrollo de una restricción de recuento reescribe AT_LEAST(k; …), AT_MOST(k; …) y EXACTLY(k; …) sobre sus operandos con AND, OR y NOT, para que las formas normales, los mapas de Karnaugh y las bases de compuertas puedan trabajar sobre una fórmula corriente: AT_LEAST(2; A, B, C) = (A AND B) OR (A AND C) OR (B AND C).

Nombre en el motor: Desarrollo de una restricción de recuentoFR: Développement d'une contrainte de comptageDE: Entfaltung einer Zählbedingung

Una restricción de recuento se reescribe sobre sus operandos: «al menos k» se construye contando los operandos uno a uno con AND y OR, «como mucho k» es la negación de «al menos k + 1», y «exactamente k» es ambas cosas.

Una restricción de recuento toma dos o más fórmulas operando y un número entero k, y es VERDADERA cuando al menos, como mucho o exactamente k de los operandos son verdaderos. El motor la evalúa contando, la dibuja como una sola compuerta (≥2, ≤2, =2) y la lee literalmente como «al menos 2 de A, B, C». El desarrollo es el paso con nombre que sustituye la compuerta por operadores corrientes cuando una transformación los necesita: «al menos k» se construye contando los operandos uno a uno con AND y OR, «como mucho k» es la negación de «al menos k + 1», y «exactamente k» es el AND de las dos.

Para tres operandos y k = 2 el desarrollo es la función de mayoría, el OR de los tres pares, y la comprobación de equivalencia de esta página confirma la identidad en las ocho filas. Para «exactamente uno» da la fórmula de tres términos del ejemplo resuelto, y para «como mucho uno» la negación de una mayoría. La forma desarrollada crece con el número de operandos, así que el paso se ejecuta dentro de los límites de las formas normales y más allá de ellos informa «No determinado» en lugar de una fórmula parcial.

La ley importa para leer los resultados: una simplificación, una FNC o FND, un mapa de Karnaugh o una forma solo con NAND de una regla con un recuento se calculan sobre el desarrollo, y el nombre del paso te lo dice. Los umbrales de puntuación, que comparan un total de puntos con un corte, no se desarrollan con esta ley; siguen siendo referencias salvo que pidas su desarrollo.

Enunciado

AT_LEAST(2; A, B, C) = (A AND B) OR (A AND C) OR (B AND C)

Demostración por tabla de verdad: AT_LEAST(2; A, B, C) = (A AND B) OR (A AND C) OR (B AND C)

AT_LEAST(2; A, B, C) = (A AND B) OR (A AND C) OR (B AND C)
#ABClhsrhs
0FALSOFALSOFALSOFALSOFALSO
1FALSOFALSOVERDADEROFALSOFALSO
2FALSOVERDADEROFALSOFALSOFALSO
3FALSOVERDADEROVERDADEROVERDADEROVERDADERO
4VERDADEROFALSOFALSOFALSOFALSO
5VERDADEROFALSOVERDADEROVERDADEROVERDADERO
6VERDADEROVERDADEROFALSOVERDADEROVERDADERO
7VERDADEROVERDADEROVERDADEROVERDADEROVERDADERO
lhs ≡ rhs se cumple · lhs and rhs agree on every assignment. · Exhaustively checked and solver cross-checked · 8 filas

La misma ley en cuatro notaciones

PalabrasAT_LEAST(2; A, B, C)
ProgramaciónAT_LEAST(2; A, B, C)
MatemáticaAT_LEAST(2; A, B, C)
ÁlgebraAT_LEAST(2; A, B, C)
LaTeX\mathrm{count}_{\geq 2}(A, B, C)
Palabras(A AND B) OR (A AND C) OR (B AND C)
Programación(A && B) || (A && C) || (B && C)
Matemática(A ∧ B) ∨ (A ∧ C) ∨ (B ∧ C)
Álgebra(A·B) + (A·C) + (B·C)
LaTeX\left(A \cdot B\right) + \left(A \cdot C\right) + \left(B \cdot C\right)
AT_LEAST(2; A, B, C) = (A AND B) OR (A AND C) OR (B AND C) AT_LEAST(2; A, B, C) = (A AND B) OR (A AND C) OR (B AND C) A B C lhsPRIMARY rhs ≥2 OR AND AND AND
AT_LEAST(2; A, B, C) = (A AND B) OR (A AND C) OR (B AND C) AT_LEAST(2; A, B, C) = (A AND B) OR (A AND C) OR (B AND C) A B C lhsPRIMARY rhs ≥2 OR AND AND AND

El error habitual

Escribir «al menos dos de tres» como A XOR B XOR C, o «exactamente uno» como la misma cadena. Una cadena de XOR es paridad, VERDADERA para uno o para tres operandos verdaderos; el desarrollo de AT_LEAST(2; A, B, C) son los tres pares, y el comprobador de equivalencia informa de las filas en las que la cadena difiere.

Preguntas

¿Por qué no escribir siempre el desarrollo a mano?

Porque crece deprisa: al menos tres de seis operandos son veinte ternas, mientras que el recuento sigue siendo una sola compuerta por muchos operandos que tenga. El desarrollo existe para que el álgebra pueda seguir funcionando; la compuerta es la forma para leer, probar y exportar.

¿Cambia el desarrollo lo que significa la regla?

No. Es una identidad, comprobada por el comprobador exacto de equivalencia en todas las asignaciones de los operandos, como cualquier otra ley de estas páginas. Solo cambia la forma.

Relacionado

Herramientas

Véase también

Leyes

Generado a partir del motor de Tangibool, semántica tangibool-semantics/1, motor 1.0.0, compilación . Cada tabla, mapa, simplificación y veredicto de estas páginas lo calculó el motor de Tangibool al compilar el sitio, y cada afirmación la volvió a comprobar el mismo verificador exacto que usa la app. Los límites se indican donde aplican. © 2026 Foreranger LTD.