• Diddlydee@feddit.uk
            link
            fedilink
            English
            arrow-up
            3
            ·
            2 days ago

            Divisible in maths leaves no remainder or is only whole numbers. In the real world everything is divisible by 2 as it doesn’t have the caveat of whole numbers.

            • FishFace@piefed.social
              link
              fedilink
              English
              arrow-up
              2
              arrow-down
              1
              ·
              2 days ago

              Yeah but I’ve never heard anyone use the word “divisible” in a non mathematical context. It’s fundamentally about numbers. You’d never say “three is divisible by two” apart from about maths. You’d never say “this cake is divisible by two”, which is already not the context you were talking in, you’d say “you can cut this cake in half”.

  • AlmightyDoorman@kbin.earth
    link
    fedilink
    arrow-up
    17
    ·
    2 days ago

    So there are infinite prime numbers, there exists only one even prime number, the odds of an prime number beeing odd is 100% ((∞-1)/∞)=100%) 2 is an prime number, therefore 2 is odd and is divisble by itself aka 2. Q.e.d.

  • Toes♀@ani.social
    link
    fedilink
    arrow-up
    4
    arrow-down
    6
    ·
    edit-2
    2 days ago

    By god they are right, this might change the future of mathematics!

    
    // 2024‑edition Rust
    use std::rc::Rc;
    
    /// Church numeral: given a successor `s: fn(u32) -> u32`,
    /// returns a function that applies `s` n times.
    type Church = Rc<dyn Fn(fn(u32) -> u32) -> Rc<dyn Fn(u32) -> u32>>;
    
    /// 0 ≡ λs.λx.x
    fn zero() -> Church {
        println!("Define 0");
        Rc::new(|_s| Rc::new(|x| {
            println!("  0 applied to {}", x);
            x
        }))
    }
    
    /// succ ≡ λn.λs.λx. s (n s x)
    fn succ(n: Church) -> Church {
        // `label` is printed *before* the closure is created, so the closure
        // does not capture any non‑'static reference.
        println!("Build successor");
        Rc::new(move |s| {
            // `inner` is the predecessor numeral applied to the same successor
            let inner = n(s);
            Rc::new(move |x| {
                // first run the predecessor
                let y = inner(x);
                println!("  predecessor applied to {} → {}", x, y);
                // then apply the extra successor step
                let z = s(y);
                println!("  +1 applied to {} → {}", y, z);
                z
            })
        })
    }
    
    /// Convert a Church numeral to a Rust integer, printing each step.
    fn to_int(n: &Church) -> u32 {
        let inc: fn(u32) -> u32 = |k| {
            println!("    inc({})", k);
            k + 1
        };
        let f = n(inc);               // f: Rc<dyn Fn(u32) -> u32>
        println!("  evaluate numeral starting at 0");
        f(0)
    }
    
    /// Even ⇔ divisible by 2
    fn is_even(n: &Church) -> bool { to_int(n) % 2 == 0 }
    fn is_odd(n: &Church) -> bool  { !is_even(n) }
    
    fn main() {
        // ---- build the numerals step‑by‑step ----
        let zero = zero();                     // 0
        let one  = succ(zero.clone());         // 1 = succ 0
        let two  = succ(one.clone());          // 2 = succ 1
    
        // ---- show the numeric values (trace) ----
        println!("\n--- evaluating 0 ---");
        println!("0 as integer → {}", to_int(&zero));
    
        println!("\n--- evaluating 1 ---");
        println!("1 as integer → {}", to_int(&one));
    
        println!("\n--- evaluating 2 ---");
        println!("2 as integer → {}", to_int(&two));
    
        // ---- parity of 2 (the proof) ----
        println!("\n--- parity of 2 ---");
        println!("Is 2 even? {}", is_even(&two)); // true
        println!("Is 2 odd?  {}", is_odd(&two));  // false
    
        // Proof: “divisible by 2” ⇔ “even”.
        // Since `is_odd(&two)` is false, no odd number can satisfy the
        // divisibility‑by‑2 condition.
        assert!(!is_odd(&two));
        println!("\nTherefore, no odd number is divisible by 2.");
    }