Documentation

Linglib.Core.Logic.Opposition.Diagram

Aristotelian diagrams (skeleton) #

Per @cite{demey-smessaert-2018} (and the broader Logica Universalis tradition of Béziau, Pellissier, Smessaert and collaborators):

An Aristotelian diagram is a finite indexed family of formulas together with the matrix of Aristotelian relations between them. The classical Square is the simplest non-trivial case (4 corners); other notable instances include:

This file provides the bare structural skeleton — full development of specializations (hexagon shapes, cube generators) is deferred. The goal here is to anchor the Square (Square.lean) and any future hexagons as instances of one general structure rather than parallel ad-hoc definitions.

Design #

A Diagram is parameterized by:

The relation matrix relation : ι → ι → AristotelianRel is derived from φ (one of the four Contradictory/Contrary/Subcontrary/Subaltern predicates from Aristotelian.lean holds, or unconnected).

structure Core.Opposition.Diagram (ι : Type) [Fintype ι] (W : Type u_2) :
Type u_2

An Aristotelian diagram: a finite indexed family of formulas with their Aristotelian relations.

The relation_correct field asserts that the labeled relation matrix matches the actual Aristotelian relations between the indexed formulas. Since the four relations + unconnected partition all formula-pairs (per Demey & Smessaert §2.1), this matrix is uniquely determined by φrelation is convenience data, relation_correct enforces consistency.

Instances For
    def Core.Opposition.Diagram.size {W : Type u_1} {ι : Type} [Fintype ι] :
    Diagram ι W

    The number of corners in the diagram.

    Equations
    • x✝.size = Fintype.card ι
    Instances For
      def Core.Opposition.Diagram.trueAt {W : Type u_1} {ι : Type} [Fintype ι] (D : Diagram ι W) (i : ι) (w : W) :

      A diagram corner satisfying its formula at a particular world.

      Equations
      Instances For

        Specializations live in sibling files:

        Adding a specialization is a matter of (a) picking an ι enum, (b) writing the relation matrix, (c) discharging relation_correct. The bitstring machinery in Bitstring.lean makes (c) automatic for Boolean-closed fragments.