Read-only archive. Publishing has closed. GitHub
nxtm3jbm

Published by @sam

Created

import Axiom
import A.t0d1zdc3
import A.a4hsz51v
import A.ta3nj1a4
import A.r59jf3ak

open a4hsz51v
open ta3nj1a4
open r59jf3ak
open t0d1zdc3

namespace nxtm3jbm

rigid universal Person extends Object := "person"
rigid universal Store extends Object := "store"

relation ClosesAt : Store "closes at" TemporalInstant
relation CannotArriveBefore : Person "cannot arrive at" Store "before" TemporalInstant
relation CanMakeItTo : Person "can make it to" Store "before" TemporalInstant

def LateArrivalMeansNotMakingIt : Prop :=
  ∀ p s closing earliest : Type,
    ClosesAt s closing →
    CannotArriveBefore p s earliest →
    Precedes closing earliest →
    ¬ CanMakeItTo p s closing

def Sam : Type := "the Axiom user sam"
def TheStore : Type := "the store sam intended to visit on the evening of 2026-08-06"
def ClosingTime : Type := "2026-08-06 21:00, the closing time of the store sam intended to visit"
def EarliestArrival : Type :=
  "2026-08-06 21:10, the earliest sam could arrive at the store, leaving at 20:40 with a normal 30 minute travel time"

structure TonightsStoreRun : Prop where
  closes :
    ClosesAt TheStore ClosingTime
  cannot_arrive_before :
    CannotArriveBefore Sam TheStore EarliestArrival
  too_late :
    Precedes ClosingTime EarliestArrival

theorem sam_cannot_make_it
    (logic_is_actual : LogicIsActual)
    (principle : A LateArrivalMeansNotMakingIt)
    (tonight : A TonightsStoreRun) :
    A (¬ CanMakeItTo Sam TheStore ClosingTime) :=
  logic_is_actual.mp _ _
    (logic_is_actual.mp _ _
      (logic_is_actual.actual_intro _
        (fun (pr : LateArrivalMeansNotMakingIt) (run : TonightsStoreRun) =>
          pr Sam TheStore ClosingTime EarliestArrival
            run.closes run.cannot_arrive_before run.too_late))
      principle)
    tonight

/-
The same scenario in traditional first-order + modal notation:

  Vocabulary:
    Constants:   s (sam),  b (the store),  c (closing time, 21:00),  e (earliest arrival, 21:10)
    Predicates:  Closes(x, t)      — store x closes at instant t
                 ArrBef(x, y, t)   — x can arrive at y before t
                 t ≺ t′            — instant t precedes instant t′
    Modality:    ◇ₐ φ              — "agent a is able to bring about φ"

  General principle (LateArrivalMeansNotMakingIt):
    ∀x ∀y ∀t ∀t′ [ Closes(y, t) ∧ ¬ArrBef(x, y, t′) ∧ t ≺ t′ → ¬◇ₓ Shop(x, y, t) ]

  Particular facts (TonightsStoreRun):
    P1:  Closes(b, c)
    P2:  ¬ArrBef(s, b, e)
    P3:  c ≺ e

  Derivation (sam_cannot_make_it):
    1. Closes(b,c) ∧ ¬ArrBef(s,b,e) ∧ c ≺ e → ¬◇ₛ Shop(s,b,c)   (UI ×4 on the principle)
    2. Closes(b,c) ∧ ¬ArrBef(s,b,e) ∧ c ≺ e                     (∧-intro on P1, P2, P3)
    3. ¬◇ₛ Shop(s,b,c)                                          (MP on 1, 2)

  Differences from the Lean version: the FOL signature leaves the sort of t/t′, the
  theory of ≺, and the semantics of ◇ₐ unspecified — here ≺ is BFO's Precedes, the
  ability modality is carried by the CanMakeItTo semantic string, the "normally 30
  minutes" hedge lives inside the EarliestArrival particular (keeping the logic
  classical rather than defaulting to a nonmonotonic system), and A (Actual) marks
  the conclusion as action-guiding rather than merely entailed.
-/

end nxtm3jbm

Jump to declaration

Filter file declarations by leaf or qualified name

nxtm3jbmPublished by @sam12 declarationsPress / to search
© 2026 Coherence LabsPrivacy PolicyTerms of Service