Encyclopedia Foundation Foundation Bool From Logic

ARTICLE 4 claims 3 theorems 1 model

Foundation Bool From Logic

Boolean truth and falsity arise from the simplest possible act: making a distinction with two sides and nothing else.

The two-sided cut

The Boolean values true and false are so familiar that it is easy to forget they have a structure. In Recognition Science, the framework's library of formal theorems asks where that structure comes from. The answer begins with a single primitive act: a distinction δ, a cut that has two sides and nothing else. The framework models those two sides as affirm and deny, two bare outcomes of the act of distinguishing. They carry no numeric content; they are only "this side" and "the other side" of one cut.

This two-constructor structure, with no further data, is the Boolean structure. The framework defines a type called LogicBool with exactly two elements: affirm and deny. It then proves the elementary facts that make this a Boolean algebra: affirm is not deny, negation swaps the two sides, conjunction and disjunction behave as expected, and the whole structure is equivalent to the standard Bool type. The equivalence is a two-way translation: affirm maps to true, deny maps to false, and the translation is a bijection, meaning nothing is lost in either direction.

The framework also proves that this is not an arbitrary choice. It rejects two decoy mappings that would break the structure. A constant map that sends everything to true fails to be injective, so it cannot distinguish the two sides. A swapped map that flips the meaning of conjunction fails to preserve the Boolean operations. These rejections show that the two-sided structure, with its natural operations, is forced by the requirement that a distinction actually distinguish.

What this establishes in plain language is that Boolean logic is not an assumption the framework imports from outside. It is a consequence of the primitive act of distinguishing. Before any numbers, before any cost function, before any physics, there is the cut. The framework's library proves that from a single distinction with two sides, the entire Boolean structure follows, and it does so with machine-checked certainty.

MODEL LogicBool · IndisputableMonolith/Foundation/BoolFromLogic.lean
/-- The two sides of a single distinction δ.

`affirm` and `deny` are the two bare outcomes of the primitive act of
distinguishing. They carry no numeric content; they are only "this
side" and "the other side" of one cut. The two-constructor structure
mirrors the split that δ performs. -/
inductive LogicBool : Type
  | affirm : LogicBool
  | deny   : LogicBool
  deriving DecidableEq, Repr
THEOREM affirm_ne_deny · IndisputableMonolith/Foundation/BoolFromLogic.lean
/-- **The distinction is real**: the two sides differ. Forced by the
constructor disjointness of the inductive type, which is exactly the
statement that δ cuts something. -/
theorem affirm_ne_deny : affirm ≠ deny := by decide
THEOREM equivBool · IndisputableMonolith/Foundation/BoolFromLogic.lean
/-- **Recovery theorem (carrier)**: `LogicBool` and `Bool` are in
bijection. The two sides of a single distinction are exactly the two
Boolean values. -/
def equivBool : LogicBool ≃ Bool where
  toFun := toBool
  invFun := fromBool
  left_inv := fromBool_toBool
  right_inv := toBool_fromBool
THEOREM decoy_constant_bool_map_rejected · IndisputableMonolith/Foundation/BoolFromLogic.lean
decoy_constant_bool_map_rejected · IndisputableMonolith/Foundation/BoolFromLogic.lean:165
/-- **Decoy 2 (constant reading rejected)**: the constant-`true` map
collapses both sides of the distinction, so it is not injective and
cannot underlie an equivalence with `Bool`. -/
theorem decoy_constant_bool_map_rejected :
    ¬ Function.Injective (fun _ : LogicBool => true) := by
  intro h
  exact affirm_ne_deny (h rfl)

What this page does not claim

This module does not derive the cost function or any numeric constant from the two-sided distinction. The equivalence to Bool is a structural bijection, not a claim about how computers implement Boolean logic. The rejected decoy maps show what fails, not that the accepted structure is the only possible one.

Verify this page

Every tagged claim above names its theorem. To check one yourself rather than trust this page, elaborate the source module with Lean 4 and audit its axiom basis:

$ lake env lean IndisputableMonolith/Foundation/BoolFromLogic.lean
expected axiom basis: [propext, Classical.choice, Quot.sound] (the Lean kernel's standard three; no RS-specific axioms)

A page whose claims cannot be reproduced this way does not ship. In production, every anchor links to the exact declaration in the public source release, and this block carries the build receipt for the page itself.

Derived articles

This page is generated by a question-recursion engine: the questions its answers raise become the next pages. The current agenda, with open targets marked red:

MACHINE LAYER · GROUNDED CLAIM TABLE · CLICK TO EXPAND