JuliaMath / Infinities.jl

A Julia package for representing infinity in all its forms
MIT License
19 stars 8 forks source link

baking the infinite #6

Open JeffreySarnoff opened 3 years ago

JeffreySarnoff commented 3 years ago

We seem to be discussing these six flavors of Infiinity


notes on symbol choices

projective infinity is pointlike yet approached from both orientations along a "circle" the choice of symbol is of a smbol for infinity where orientation mirrors

The symbol used for ComplexInfinity resembles they way ComplexInfinity often is drawn. . . . . . . . . . . . ⧝
. . . . . . . . . . . image

The symbol for NotANumber ( ꝋ ) is of the form assigned to symbolize the empty set ( ∅ ). Also, it may be read like a sign saying "not even zero".


It is good practice to have keyboard-easy names for exported unicode symbolics. (exports are separated conceptually, for ease of presentation)

export NegativeInfinity, ( -∞ ), PositiveInfinity, (+∞ ), 
export RealInfinity, ( s∞ ),  
export ProjectiveInfinity, ( ⧞ ), ComplexInfinity, (  ⧝ )
export Aleph0, ( ℵ₀ ), Aleph1, ( ℵ₁ )
export NotANumber, ( ꝋ )

one thought

abstract type AbstractInfinity end

abstract type InfinityOrder <: AbstractInfinity end 
struct Aleph0 <: InfinityOrder end
struct Aleph1 <: InfinityOrder end

abstract type InfiniteMagnitude <: AbstractInfinity end
struct RealInfinity             <: InfiniteMagnitude end
struct ProjectiveInfinity       <: InfiniteMagnitude end

abstract OrientedInfinity <: AbstractInfinity end
struct NegativeInfinity   <: OrientedInfinity end
struct PositiveInfinity   <: OrientedInfinity end
dlfivefifty commented 3 years ago

No we cannot use AbstractInfinity as we need to work with dispatch on Real, Integer, etc. InfiniteCardinal <: Integer is absolutely essential to InfiniteArrays.jl

JeffreySarnoff commented 3 years ago

Of course.

triage recently determined to introduce AbstractComplex (non-breaking). With InfiniteCardinal, the Numeric type-levels become:

Number
  AbstractComplex
    Complex
    Real
      Irrational
      Rational

      AbstractFloat
        Float16, .. Float64, BigFloat

      Integer
        InfiniteCardinal
          ℵ₀ ,  ℵ₁ 
        Signed
          Int8 .. Int128, BigInt
        Unsigned
          UInt8 .. UInt128
        Bool

(I do not know how they are be used) and if the first two InfiniteOrdinals are of beneifit

    Integer
       InfiniteOrdinal
          ω¹, ω²
       InfiniteCardinal
          ℵ₀ ,  ℵ₁ 

the remaining infinities could fit this way

Number
  AbstractComplex
    ProjectiveInfinity
    Complex
      ComplexInfinity

  Real
    RealInfinity
    SignedInfinity
       PositiveInfinity, NegativeInfinity

    Irrational
    Rational

    AbstractFloat
      Float16, .. Float64, BigFloat

    Integer
      InfiniteCardinal
           ℵ₀ ,  ℵ₁ 
      Signed
          Int8 .. Int128, BigInt
      Unsigned
          UInt8 .. UInt128
      Bool
dlfivefifty commented 3 years ago

Yes looks good.

We could make InfiniteCardinal <: Unsigned. I vaguely remember trying that and running into some problems though...but we can always try.

JeffreySarnoff commented 3 years ago

These pages are posted here for reference (while other software and other's mathematical perspecitves may approach this differently, the algebra appears reasonable)

from functions.wolfram.com on Infinity on ComplexInfinity

from reference.wolfram.com on Infinity on ComplexInfinity on Indeterminate (NotANumber)


Fredrik Johansson in Fungrim works this way:

This formal symbol [∞] represents a quantity larger than any real number [magnitude-like]. We define +∞=∞ Multiplication of ∞ by a nonzero complex number represents an infinite limit with the given direction in the complex plane. In particular, −∞, i∞ and −i∞ are frequently used.

This formal symbol [⧝] represents a quantity with infinite magnitude and undefined sign. It is typically used to represent the value of meromorphic functions at poles. The set {ℂ ⋃ ⧝} represents the complex Riemann sphere.


Fredrik has helped me with Arblib, and I respect the work that I am about to use as a foil -- to elucidate a subtlety in my design of the modification to the abstracting concretion above.

"define +∞=∞" is not the same as, say, imagine/derive/construct ς to be the limit magnitude (akin to ℵ₁ as limit ordinal) define +∞ as +|ς| and -∞ as -|ς|

"define ComplexInfinity as ProjectiveInfinity." and compose that with a signed imaginary units to obtain ... one of two oriented ?projections? of the unsigned ComplexInfinity. This is similar to the RealInfinity construction. They each postulate a convienient definens for intial utilization rules. This post axiomatic approach seems an unneccesary sidestep.

The provision of a perdurant signedless entity allows the same work with greater symmetry.